Variablen aus Txt datei erstellen
Guten Tag die Damen und Herren,
ich sitze gerade daran für meine Firma ein batch zur Sicherung von Disketten (Dies ist kein Witz) zu erstellen.
Bisher sieht das jetzt wie folgt aus:
Datei eins:
Mir ist bewusst das die Pfadangabe in Datei1 noch nicht stimmt. Jedenfalls ist jetzt mein Problem jenes das ich den Speicherort für die Jeweiligen Diskettensicherungen aus einem Index auslesen möchte, dieser wird erstellt mit den Parametern aus der 1. Datei:
Das schreiben ist weniger das Problem, ich muss nur den Speicherort aus der %Kunden%.txt auslesen können, das wäre im grunde alles.
Es wäre super wenn Ihr mir helfen könntet.
Gruß
Ghost-7k
ich sitze gerade daran für meine Firma ein batch zur Sicherung von Disketten (Dies ist kein Witz) zu erstellen.
Bisher sieht das jetzt wie folgt aus:
@echo off
:start
@echo off
set Speicherort=%1%\\\SERVER\001 Kunststoff-ServerDisketten_Sicherung\
@echo Geben Sie den Namen des Kundens an bei Doppelnamen untersrich verwenden: Beispiel: Sedus_Boettner
@echo off
set /p Kunde=
@echo Genem Sie die Artikelnummer bzw Artikelbezeichnung und Werkzeugnummer ein, falls nicht vorhanden tippen Sie bitte 0 ein: Beispiel 992008_0 (Artikelnummer/ Artikelbezeichnung_Werkzeugnummer)
@echo off
set /p Werkzeug=
@echo Geben Sie die Maschine an auf welcher die Diskette erstellt wurde. Achten Sie dabei auf die Einhaltung der Namen: 35to, 75to, 125to, 170to, 175to, 250to, 330to, 420to.
@echo off
set /p Maschine=
@echo off
set count=0
for %%i in (A:\*) do set /a count+=1
if "%count%"=="0" goto Fehler1
goto Kopier
:Kopier
mkdir \\SERVER\001 Kunststoff-ServerDisketten_Sicherung\%Kunde%\%Werkzeug%\%Maschine%\%date%\
xcopy A: \\SERVER\001 Kunststoff-ServerDisketten_Sicherung\%Kunde%\%Werkzeug%\%Maschine%\%date%\
@echo off
set count=0
for %%i in (\\SERVER\001 Kunststoff-ServerDisketten_Sicherung\%Kunde%\%Werkzeug%\%Maschine%\%date%\*) do set /a count+=1
if "%count%"=="0" goto Fehler
goto Erfolg
:Erfolg
echo msgbox"Ihre Diskette wurde erfolgreich übertragen",vbInformation , "Diskettenstatus"> %temp%\msg.vbs
%Temp%\msg.vbs
erase %temp%\msg.vbs
goto Ende
:Fehler
echo msgbox"Ihre Diskette wurde nicht übertragen",vbInformation , "Diskettenstatus"> %temp%\msg.vbs
%Temp%\msg.vbs
erase %temp%\msg.vbs
goto Ende
:Fehler1
echo msgbox"Ihre Diskette wurde nicht übertragen da keine Diskette vorhanden ist",vbInformation , "Diskettenstatus"> %temp%\msg.vbs
%Temp%\msg.vbs
erase %temp%\msg.vbs
goto Ende
:Ende
Exit
Goto Indexssuche
:Ende
@echo Der Prozess ist jetzt beendet, Sie können das Programm nun beenden
Pause
@echo off
:Indexerweiterung
:Indexssuche
@echo Geben Sie den gesuchten Kundennamen ein
@echo off
set /P wort=Suche nach Kunde:
find /I "%wort%" logbuch.txt
if errorlevel 1 GOTO Kundeanlegen
if errorlevel 0 echo Bitte wählen Sie nun das Entsprechnde Werkzeug aus der Liste aus oder Suchen Sie per Eingabe
goto Werkzeugliste
goto Ende
:Kundeanlegen
@echo Ihr Kunde wurde nicht gefunden, Sie können nun einen neuen Kunden anlegen Oder X drücken um das Programm zu verlassen.
@echo Geben Sie den Namen des Kundens an bei Doppelnamen untersrich verwenden: Beispiel: Sedus_Stoll
@echo off
set /p Kundeneu=
echo >> %Kundeneu%.txt
@echo
Pause
:Werkzeugliste
@echo Hier findet sich die Suchroutine für die Werkzeugabfrage
Rem wertabfrage(dateispeicherortabfgrage aus der datei logbuch.txt)für die entprechende Kundenkennung
Rem wenn dateiabfrage erfolgreich dann zeige die Datei als Liste an oder ermögliche dem Nutzer die Datei nach einem Namem/Nummer zu durchsuchen
for /f "tokens=1,* delims=:" %%i in ('findstr /n $ /Kunden/%wort%.txt') do @(
02.
for /L %%a in (2,2,6) do @if %%i==%%a @echo %%j
03.
)
Pause
Mir ist bewusst das die Pfadangabe in Datei1 noch nicht stimmt. Jedenfalls ist jetzt mein Problem jenes das ich den Speicherort für die Jeweiligen Diskettensicherungen aus einem Index auslesen möchte, dieser wird erstellt mit den Parametern aus der 1. Datei:
\\SERVER\001 Kunststoff-ServerDisketten_Sicherung\%Kunde%\%Werkzeug%\%Maschine%\%date%\
Es wäre super wenn Ihr mir helfen könntet.
Gruß
Ghost-7k
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 250544
Url: https://administrator.de/contentid/250544
Ausgedruckt am: 25.11.2024 um 08:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo Ghost,
wenn ich Dich richtig verstanden habe, geht es darum, die Variablen
Das kann man so machen:
wobei
Damit die Belegung der Variablen im Unterprogramm
aufgebaut sein.
Das Unterprogramm wird für jeden Datensatz aufgerufen. Die Verarbeitung sollte in einem Unterprogramm und nicht innerhalb der
Falls die Datensätze irgendwelche Zeichen enthalten, die von Batchscript als Steuerzeichen bzw. zum Sprachumfang gehörend betrachtet werden (z.B.
Die
Tipp: Vermeide die Verwendung einer Variablen namens
Gruß
Friemler
wenn ich Dich richtig verstanden habe, geht es darum, die Variablen
%Kunde%
, %Werkzeug%
, %Maschine%
und %date%
aus einer Textdatei einzulesen.Das kann man so machen:
@echo off & setlocal
for /f "usebackq tokens=1-4 delims=;" %%a in ("KundenDaten.txt") do (
call :ProcessData "%%a" "%%b" "%%c" "%%d"
)
exit /b
:ProcessData
set "Kunde=%~1"
set "Werkzeug=%~2"
set "Maschine=%~3"
set "Dat=%~4"
:: Daten verarbeiten
:: ...
exit /b
KundenDaten.txt
die einzulesende Datei ist, in der für jeden Datensatz eine Zeile enthalten sein muss, die einzelnen Felder durch Semikola getrennt (Parameter delims=;
).Damit die Belegung der Variablen im Unterprogramm
ProcessData
stimmt, müsste ein Datensatz nach dem Schema<Kunde>;<Werkzeug>;<Maschine>;<Datum>
Das Unterprogramm wird für jeden Datensatz aufgerufen. Die Verarbeitung sollte in einem Unterprogramm und nicht innerhalb der
FOR
-Schleife erfolgen, weil Du sonst wahrscheinlich Probleme mit der verzögerten Variablenerweiterung bekommen würdest.Falls die Datensätze irgendwelche Zeichen enthalten, die von Batchscript als Steuerzeichen bzw. zum Sprachumfang gehörend betrachtet werden (z.B.
&, %, <, >, |
), kann es zu Problemen kommen.Die
KundenDaten.txt
muss mit der Zeichencodierung / Codepage OEM 850 abgespeichert werden, sonst werden evtl. enthaltene deutsche Umlaute falsch eingelesen.Tipp: Vermeide die Verwendung einer Variablen namens
%Date%
, das ist eine Standard-Variable von Batchscript und enthält das aktuelle Systemdatum.Gruß
Friemler