Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

BATCH Dateinamen auslesen und als Parameter übergeben

Frage Entwicklung Batch & Shell

Mitglied: yakazaa

yakazaa (Level 1) - Jetzt verbinden

24.04.2008, aktualisiert 18.10.2012, 18553 Aufrufe, 19 Kommentare

Hallo zusammen, bräuchte da ganz dirngen Hilfe bei einer Sache, die eigentlich eine Lapalie ist, aber eben nur eigentlich !
Aber ich fange mal vorne an:

Unsere Firma brennt für unsere Kunden Image CDs die letztendlcih auf einem DOS Skript basieren.

Jetzt hat unser Kunde mehrere Stationen und Pro Station eine Image CD.
Diese Image CDs beinhalten eine AUTOEXEC.BAT, welche wiederum eine RESTORE.BAT mit einem entsprechendem Parameter aufruft.
Der Parameter ist der Stationssname z.B.: RECHNER-1
Die RESTORE.BAT startet dann eine Recovery der Datei RECHNER-1.PQI wobei RECHNER-1 halt der übergebene Parameter ist.

Jetzt muss also für jede Station diese Autoexec.bat angepqasst werden und ich soll für einen Kunden mit 40 Pcs besagte Images brennen - Ihr könnt euch vorstellen das ich jetzt keine Lust hab, immer und immer wieder diese Date zu ändern, einen neuen Bootbereich zu basteln und so weiter.

Meine Frage konkret: Kann man nicht die CD nach PQI Files durchsuchen lassen (ist ja immer nur eins drauf) und dann den Namen so verändern, dass letztendlich statt RECHNER-1.PQI dann nurnoch RECHNER-1 in der zu übergebenen Variable steht ?!

Aus einem anderen Beitrag hier im forum hab ich mir schonmal sowas hier zurechtgebastelt, aber so ganz ist das glaub ich nicht das richtige, oder ?!

AUTOEXEC.BAT sieht so aus:
01.
@ECHO OFF 
02.
rem Datei: AUTOEXEC.BAT (PC Konfiguration) 
03.
rem Stand: 14:16 14.01.1999 
04.
 
05.
CLS 
06.
VER /R 
07.
PROMPT $P$G 
08.
VERIFY ON 
09.
PATH A:\ 
10.
keyb gr 
11.
MSCDEX.EXE    /L:Z     /D:ONIDE001 
12.
CLS 
13.
 
14.
for /F %%i in ('dir /b /A:-d /o:d "*.PQI"') do Set Rechnername=%%i 
15.
RESTORE %Rechnername% 
16.
REM Ursprünglich nur RESTORE RECHNER-01 (ohne.PQI)
RESTORE.BAT sieht so aus:

01.
@ECHO OFF 
02.
z:\ 
03.
PQER /IFC /WFS /CMD=A:\Restore.SCR /IMG=z:\%Rechnername% 
04.
 
05.
REM Ursprünglich PQER /IFC /WFS /CMD=A:\Restore.SCR /IMG=z:\%%i.PQI 
06.
 
Leider wird mir immer ein Syntaxfehler ausgegeben.

Ich hoffe Ihr könnt mir helfen !!

Schonmal ein dickes Danke im Voraus !!!
Mitglied: bastla
24.04.2008 um 14:42 Uhr
Hallo yakazaa!

Versuche es so:
01.
for /f %%i in ('dir /b /s /a-d "*.PQI"') do set "Rechnername=%%~ni"
Grüße
bastla
Bitte warten ..
Mitglied: yakazaa
24.04.2008 um 14:45 Uhr
Hi,
brenne gerade eine neue CD.
Was macht denn dieses ~ni genau ?!
Im Prinzip hab ichja schon RECHNER-1.PQI in der Variablen %%i stehen gehabt.

Jetzt muss ich ja nur noch die letzten 4 Zeichn killen und fertig ist meine Variable.
Bitte warten ..
Mitglied: bastla
24.04.2008 um 14:51 Uhr
Hallo yakazaa!

Das "%%~ni" soll nur den Dateinamen auslesen, setzt allerdings die Verwendung von "cmd.exe" voraus, während bei Dir ja vermutlich "command.com" verwendet wird - daher vermutlich nicht anwendbar.

Wozu benötigst Du eigentlich den Namen? Soll in der RESTORE.BAT nicht ohnehin "Z:\Name.PQI" stehen?

Noch zur Sicherheit: Die .PQI-Datei steht im Root-Verzeichnis?

Grüße
bastla

[Edit] Nachtrag: Falls der Dateiname keinen weiteren "." enthält:
01.
for /f %%i in ('dir /b /a-d "\*.PQI"') do for /f "delims=." %%n in ("%%i") do set "Rechnername=%%n"
[/Edit]
Bitte warten ..
Mitglied: yakazaa
24.04.2008 um 14:58 Uhr
Hallo bastla !

Du hast Recht, es wird die Command.com verwendet und die PQI Datei ist im Root Verzeichnis.

Ich glaube der Parameter wird noch an anderer Stelle verwendet, denn wenn cih das Gesamte Dingen ausführe, kommt für den Bruchteil einer Sekunde eine Fehlermeldung in der irgendwas mit Paramter steht. Zum kompletten lesen der Fehlermeldung reicht es aber leider nicht, denn Power Quest startet trotzdem erstmal, bricht dann aber mit einer Fehlermeldung ab.

Ich werd dans Ganze mal in einer VM Ware versuchen und dann den Vorgang aufnehmen.
Dann sollte ich ja eiegntlich in dem Video die Fehlermledung länger sehen können.
Umständlich - aber so sollte es klappen

Eine Möglichkeit die letzten 4 Zeichen einfach wegzuschmeißen gibt es nicht, oder ?!

Edit: Die Fehlermeldung lautet:
Sytaxfehler
Erforderlicher Parameter fehlt
Bitte warten ..
Mitglied: bastla
24.04.2008 um 15:02 Uhr
Hallo yakazaa!

Damit Du die Fehlermeldung besser nachvollziehen kannst, solltest Du (zum Testen) das "ECHO OFF" weglassen und am Ende (oder auch zwischendurch) einen "PAUSE"-Befehl einfügen.

Eine Möglichkeit die letzten 4 Zeichen einfach wegzuschmeißen gibt es nicht, oder ?!
siehe Nachtrag oben

Grüße
bastla
Bitte warten ..
Mitglied: yakazaa
24.04.2008 um 15:10 Uhr
Habe das Ganze mal kurz simuliert um zu sehen was jetzt übergeben wird und bekomme folgende Fehlermeldung.

C:\Documents and Settings\dedtu\Desktop>for /F %i in ('dir /b /a-d "\*.PQI"') do
for /F "delims=." %n in ("%i") do set "Rechnername=%n"
File Not Found

Habe auf dem Desktop eine SAMPLE.PQI erstellt.

Quellcode Test.BAT:
01.
for /f %%i in ('dir /b /a-d "\*.PQI"') do for /f "delims=." %%n in ("%%i") do set "Rechnername=%%n" 
02.
RESTORE %Rechnername%
Quellcode RESTORE.BAT
01.
echo %Rechnername% 
02.
pause
Bitte warten ..
Mitglied: yakazaa
24.04.2008 um 15:13 Uhr
Ich poste jetzt nochmal die Version wie es ursprünglich war, evtl. gibt es ja bei mir einen Denkfehler...

Quellcode AUTOEXEC.BAT:
01.
@ECHO OFF 
02.
rem Datei: AUTOEXEC.BAT (PC Konfiguration) 
03.
rem Stand: 14:16 14.01.1999 
04.
 
05.
CLS 
06.
VER /R 
07.
PROMPT $P$G 
08.
VERIFY ON 
09.
PATH A:\ 
10.
keyb gr 
11.
MSCDEX.EXE    /L:Z     /D:ONIDE001 
12.
CLS 
13.
 
14.
RESTORE SVS-1
Quellcode RESTORE.BAT:
01.
@ECHO OFF 
02.
z:\ 
03.
PQER /IFC /WFS /CMD=A:\Restore.SCR /IMG=z:\%1.PQI
Bitte warten ..
Mitglied: yakazaa
24.04.2008 um 15:17 Uhr
Ok, hab den Fehler gefunden:

Der / vor dem *.PQI muss weg..

Ziehe gerade nen Image und teste dann in einer VM Ware... Meld mich wieder...
Bitte warten ..
Mitglied: yakazaa
24.04.2008 um 15:29 Uhr
Hm, leider bleibt der Fehler..

Noch ne Idee woran es liegen könnte ?!
Bitte warten ..
Mitglied: bastla
24.04.2008 um 15:38 Uhr
Hallo yakazaa!

Habe auf dem Desktop eine SAMPLE.PQI erstellt.
Gesucht wird in Root (wegen des "\" vor "*.PQI") ...

Grüße
bastla
Bitte warten ..
Mitglied: yakazaa
24.04.2008 um 15:40 Uhr
Ja aber hab das Skript doch auch aufm Desktop liegen gehabt...
Bitte warten ..
Mitglied: Biber
24.04.2008 um 15:56 Uhr
Moin yakazaa,

nicht hektisch werden...
('dir /b /a-d "\*.PQI"') ---> sucht in "Root", aber Du stehst in "\...bla...\..\desktop"
('dir /b /a-d ".\*.PQI"') --> würde in "...\Desktop" suchen, wenn Du in "..\Desktop" stehst
('dir /b /s /a-d "\*.PQI"') ---> würde AB "Root" alle SubDirs des Laufwerks scannen , egal wo Du stehst

Variante 1 ist für Deinen Zweck die ungünstigste.

Grüße
Biber
Bitte warten ..
Mitglied: yakazaa
24.04.2008 um 16:03 Uhr

Ok ok, dann weiss ich schonmal was ich nicht verwenden sollte

Hab eigentlich eine DVD auf der das besagte Image ist, nenen wir es RECHNER-01.PQI
Im Laufe des Bootvorgangs von dieser DVD wird das Laufwerk auf Z: gemappt.
Unter A: befinden sich RESTORE.BAT sowie AUTOEXEC.BAT und andere, zum Boot notwendige Dateien.

Das Ganze basiert "irgendwie" auf Wndows 95, so steht es zumindest während des Bootvorgangs da....

Wenn er dann zu der Position kommt, andem er

PQER /IFC /WFS /CMD=A:\RESTORE.SCR /IMG=Z:\%RECHNER%.PQI

aufruft, läuft er in den oben beschriebenen Syntaxfehler.

Das mit dem File not found hab ich jetzt verstanden.
Bitte warten ..
Mitglied: yakazaa
24.04.2008 um 16:07 Uhr
Habe mir jetzt überlegt die beiden Dateien zusammen zu legen.

Komme dann auf folgende AUTOEXEC.BAT:
01.
@ECHO ON 
02.
rem Datei: AUTOEXEC.BAT (PC Konfiguration) 
03.
rem Stand: 14:16 14.01.1999 
04.
 
05.
REM CLS 
06.
VER /R 
07.
PROMPT $P$G 
08.
VERIFY ON 
09.
PATH A:\ 
10.
keyb gr 
11.
MSCDEX.EXE    /L:Z     /D:ONIDE001 
12.
REM CLS 
13.
 
14.
for /f %%i in ('dir /b /a-d "*.PQI"') do for /f "delims=." %%n in ("%%i") do set "RECHNER=%%n" 
15.
z: 
16.
PQER /IFC /WFS /CMD=A:\RESTORE.SCR /IMG=Z:\%RECHNER%.PQI
Siehtda noch irgendjemand irgendwelche Fehler ?!
Bitte warten ..
Mitglied: bastla
24.04.2008, aktualisiert 18.10.2012
Hallo yakazaa und Biber!

Die Suche in Root mit "\*.PQI" basierte auf der Bestätigung oben, war aber zum Testen mit einer an einem anderen Ort gespeicherten Datei tatsächlich die "ungünstigste" Variante ...

Siehtda noch irgendjemand irgendwelche Fehler ?!
"Stand: 14:16 14.01.1999"

Wenn tatsächlich nicht mehr zu tun ist, als jetzt im Batch steht, ist die Zerlegung des Namens zumindest unnötig , und es sollte genügen:
01.
for /f %%i in ('dir /b /a-d "*.PQI"') do set "RECHNER=%%i" 
02.
z: 
03.
PQER /IFC /WFS /CMD=A:\RESTORE.SCR /IMG=Z:\%RECHNER%
Damit wäre auch für den Fall vorgesorgt, dass sich doch einmal in den Namen der .PQI-Datei ein Punkt einschleichen sollte. (Die Root-Angabe beim "dir"-Befehl habe ich weggelassen, obwohl ich sie weiterhin sinnvoll fände ...)

Grüße
bastla
Bitte warten ..
Mitglied: yakazaa
25.04.2008 um 08:58 Uhr
Guten Morgen zusammen,

Habe gestern noch bis tief in die N8 mein Glück versucht, aber es wikll einfach nicht klappen.

Habe das Ganze wieder auf 2 Dateien aufgeteilt und das SVS-2.PQI wird auch erfolgreich übergeben.
Allerdings gibt Easy Restore einen Fehler aus, das Image könne nicht gefunden werden oder wäre ungültig. Quittiere ich mit OK, stehe ich wieder im DOS Modus bei Z:\>.
Gebe ich dann genau das ein, was die AUTOEXEC übergibt, also z.B.: RESTORE RECHNER-01 läuft die Recovery problemlos an und auch durch...

Ich glaube ich sollte das Ganze besser sein lassen, oder was meint Ihr ?!

Ausserdem erhalte ich noch immer einen Syntaxfehler, direkt nach der Ausgabe von MSCDEX:
01.
MSCDEX Version 2,23 
02.
Copyright (C) Microsoft Corp. 1986 - 1993. Alle Rechte vorbehalten. 
03.
        Laufwerk Z: = Treiber ONIDE001 Gerät 0 
04.
Syntaxfehler
Bitte warten ..
Mitglied: yakazaa
25.04.2008 um 09:10 Uhr
Ok, durch das Einfügen von Pausen habe ich jetzt rausbekommen, das der Syntaxfehler in der FOR Schleife auftritt.

Hier nochmal der Quellcode meiner AUTOEXEC:

01.
@ECHO OFF 
02.
 
03.
VER /R 
04.
PROMPT $P$G 
05.
VERIFY ON 
06.
PATH A:\ 
07.
keyb gr 
08.
MSCDEX.EXE    /L:Z     /D:ONIDE001 
09.
 
10.
z: 
11.
pause //bis hierher alles i.O. 
12.
 
13.
for /f %%i in ('dir /b /a-d "*.PQI"') do set "RECHNER=%%i" 
14.
// Syntaxfehler erscheint 
15.
echo %Rechner% 
16.
//Ausgabe: ECHO ist ausgeschaltet (OFF) 
17.
pause 
18.
RESTORE %RECHNER%
Bitte warten ..
Mitglied: Biber
25.04.2008 um 20:31 Uhr
Moin yakazaa,

vielleicht kennt ja Dein Win95-Derivat noch keine FOR/F-Anweisung?
Ich weiß es nicht mehr so genau - als Win95 herauskam waren meine Erfahrungen mit Bat relativ einseitig...
... na gut, ich bin damals mit dem Batmobil über'n Flur gerollert, aber sonst...

Wenn es für Dein OS noch KEIN FOR/F gibt/gab und diese *.PQI auf dem Root der CD liegt wie es in Deinen allerallerersten Varianten oben zu sein scheint, dann reicht doch in der AUTOEXEC ein "FOR %%i ..." statt ein "FOR /F"
01.
... 
02.
z: 
03.
REM auf Z:\, also dem CD-Lw im Root liegt die *PQI 
04.
REM dann statt der Restore.bat: 
05.
For %%i in (*.PQI) DO  PQER /IFC /WFS /CMD=A:\Restore.SCR /IMG=z:\%%i
Aber das brauchst Du nur ausprobieren, wenn bei Deiner Start-CD wirklich noch die Command.com statt der CMD.exe als Befehlsinterpreter aktiv sein sollte.
[Testen mit: "Set"-Eingabe am Prompt. Ein Wert davon sollte COMSPEC lauten und entweder A:\Command.com beinhalten oder A:\CMD.EXE]

Wenn das nicht so ist, dann haben wir irgendwo alle einen Denkfehler drin bzw. Deine Konstellation ganz falsch verstanden.

Grüße
Biber
Bitte warten ..
Mitglied: yakazaa
28.04.2008 um 08:44 Uhr
Biber - du bist ein Tier

1000 Dank, es klappt jetzt endlich !
Ich arbeite mit der COMMAND.COM - von Windows 95

Den COMSPEC Wert liefer ich später nach,
jetzt spielt er erstmal das Image zurück

Also: Danke noch mal und Tschüss !
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Text-Datei auslesen und Inhalt als Parameter übergeben (1)

Frage von aubm2013 zum Thema Batch & Shell ...

Windows Server
gelöst Eventlog gesperrtes Konto, Konto als Parameter übergeben (10)

Frage von pablovic zum Thema Windows Server ...

Batch & Shell
gelöst Mit batch zeilen auslesen (2)

Frage von keksegriller zum Thema Batch & Shell ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...