per batch file exes aus diversen Ordnern starten
Hi@all
Ich habe folgendes Problem :
Ordnerstruktur :
Hauptordner
-1. Unterordner
-2. Unterordner
usw
In jedem dieser Unterordner befindet sich entweder 1 oder 2 exes welche ausgeführt werden müssen !
Das soll jetzt in nem Batchfile funktionieren. Ich habe keine Ahnung wie ich das realisieren kann.
Bis jetzt ist folgendes :
dir /b /c >ordnerinhalt.txt
for /f /d /r %%f in (ordnerinhalt.txt) Do call %%f/*.exe
Die Unterordner heissen verschieden. Die Exes heissen verschieden. Die Anzahl wächst stetig.
Hinter dem ausführen muss ich noch parameter angeben können !
( Sind MS-Patches )
Ich hoffe schwer ihr könnt mir helfen. Sitze jetzt da schon 3-4h dran und komm nicht weiter.
Danke euch vielmal für eure Hilfe
Peace Böby
Ich habe folgendes Problem :
Ordnerstruktur :
Hauptordner
-1. Unterordner
-2. Unterordner
usw
In jedem dieser Unterordner befindet sich entweder 1 oder 2 exes welche ausgeführt werden müssen !
Das soll jetzt in nem Batchfile funktionieren. Ich habe keine Ahnung wie ich das realisieren kann.
Bis jetzt ist folgendes :
dir /b /c >ordnerinhalt.txt
for /f /d /r %%f in (ordnerinhalt.txt) Do call %%f/*.exe
Die Unterordner heissen verschieden. Die Exes heissen verschieden. Die Anzahl wächst stetig.
Hinter dem ausführen muss ich noch parameter angeben können !
( Sind MS-Patches )
Ich hoffe schwer ihr könnt mir helfen. Sitze jetzt da schon 3-4h dran und komm nicht weiter.
Danke euch vielmal für eure Hilfe
Peace Böby
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 25499
Url: https://administrator.de/contentid/25499
Ausgedruckt am: 23.11.2024 um 15:11 Uhr
17 Kommentare
Neuester Kommentar
Moin,
da es sich um MS-Patches handelt, ist die Frage ob die Batch dynamisch gebaut werden muss, zumal es vielleicht ein bischen kritisch ist mit den Hotfix Parametern (/passive /norestart). Ab und an gibt es Patches die aus Kompatibilitätsgründen noch die alte Syntax fahren.
Es geht auch so (läuft bestens):
(unter Sp1.us gibt es einen ordner Hotfix_Post_SP1, die Batch liegt unter SPPATH1)
set SPPATH1=\\SERVERNAME\SHARENAME\W2K3\Sp1.us
REM FOR CD/LOCAL INSTALL USE NEXT LINE
REM set SPPATH1=.
@echo.
@echo #####################################
@echo ### SERVER 2003 with Service Pack 1 ###
@echo #####################################
REM 20050614
REM Superseded 20050810 %SPPATH1%\Hotfix_Post_SP1\Q883939_MS05025_DS.exe /passive /norestart
%SPPATH1%\Hotfix_Post_SP1\Q896358_MS05026_DS.exe /passive /norestart
%SPPATH1%\Hotfix_Post_SP1\Q896422_MS05027_DS.EXE /passive /norestart
%SPPATH1%\Hotfix_Post_SP1\Q898458_MS05031_DS.EXE /passive /norestart
Karo
da es sich um MS-Patches handelt, ist die Frage ob die Batch dynamisch gebaut werden muss, zumal es vielleicht ein bischen kritisch ist mit den Hotfix Parametern (/passive /norestart). Ab und an gibt es Patches die aus Kompatibilitätsgründen noch die alte Syntax fahren.
Es geht auch so (läuft bestens):
(unter Sp1.us gibt es einen ordner Hotfix_Post_SP1, die Batch liegt unter SPPATH1)
set SPPATH1=\\SERVERNAME\SHARENAME\W2K3\Sp1.us
REM FOR CD/LOCAL INSTALL USE NEXT LINE
REM set SPPATH1=.
@echo.
@echo #####################################
@echo ### SERVER 2003 with Service Pack 1 ###
@echo #####################################
REM 20050614
REM Superseded 20050810 %SPPATH1%\Hotfix_Post_SP1\Q883939_MS05025_DS.exe /passive /norestart
%SPPATH1%\Hotfix_Post_SP1\Q896358_MS05026_DS.exe /passive /norestart
%SPPATH1%\Hotfix_Post_SP1\Q896422_MS05027_DS.EXE /passive /norestart
%SPPATH1%\Hotfix_Post_SP1\Q898458_MS05031_DS.EXE /passive /norestart
Karo
ooookay. Ich machs mir mal einfach und nehma an, das die EXE in den Unterverzeichnissen (kurz UVz) immer den gleichen namen haben, nämlich Hotfix und die batch im root liegt. (Achtung ... ich habs noch nicht getestet, das überlasse ich Dir )
ROOT
UVz1
UVz1
@echo off
dir /B /AD>VZ.txt
ECHO.
ECHO ACHTUNG: Es geht los
ECHO.
ECHO.
for /F "eol=; tokens=1 delims= " %%i in (vz.txt) DO (
echo %%i
"%%i\HOTFIX.exe" /passive /norestart
)
Karo
ROOT
UVz1
UVz1
@echo off
dir /B /AD>VZ.txt
ECHO.
ECHO ACHTUNG: Es geht los
ECHO.
ECHO.
for /F "eol=; tokens=1 delims= " %%i in (vz.txt) DO (
echo %%i
"%%i\HOTFIX.exe" /passive /norestart
)
Karo
Moin Böby,
der Parameter /w bei der Start.exe ...sorry, der unabsichtlich nicht erklärt.
Ist im weitesten Sinne ein Undokumentierter, denn bei "Start /?" kommt die Hilfe:
START ["Titel"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME] | /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B] [Befehl/Programm]
[Parameter]
Start /W ist die intuitive, aber nicht dokumentierte Kurzform von "Start /Wait".
Soll bewirken: Warte nach dem Starten des (W32-)Programmes, bis dieses beendet wurde.
Denn Du willst ja die Updates NACHeinander durchlaufen lassen, nicht parallel.
Sollte Deine Start.exe den Parameter "/W" nicht interpretieren können, dann stattdessen "Start /wait ".
Schönes Wochenende
Biber
der Parameter /w bei der Start.exe ...sorry, der unabsichtlich nicht erklärt.
Ist im weitesten Sinne ein Undokumentierter, denn bei "Start /?" kommt die Hilfe:
START ["Titel"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME] | /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B] [Befehl/Programm]
[Parameter]
Start /W ist die intuitive, aber nicht dokumentierte Kurzform von "Start /Wait".
Soll bewirken: Warte nach dem Starten des (W32-)Programmes, bis dieses beendet wurde.
Denn Du willst ja die Updates NACHeinander durchlaufen lassen, nicht parallel.
Sollte Deine Start.exe den Parameter "/W" nicht interpretieren können, dann stattdessen "Start /wait ".
Schönes Wochenende
Biber
Hmm, Böby,
ich bin auch vorsichtig mit einer Ferndiagnose, aber...
..was zumindest für das Betriebssystem bzw. auch für den RunAs-Befehl missverständlich sein könnte:
- in Thread oben sprachen wir noch von dem Start-Befehl. Der, zu dem ich die Hilfe "Start /?" gepostet habe.
- hier, wenn ich das richtig lese, benutzt Du auch eine Start.bat
-und in der RunAs-Zeile endet das mit "RunAs .... Start inst.bat /k"
Stell auf jeden Fall sicher, dass auch das doofe Windows mitbekommt, welche Start und welche Inst.bat gemeint ist und zu wem der Parameter /k gehört.
Also Pfadangaben, Dateiendungen und Anführungszeichen dazu.
Vielleicht hilft das schon - sonst poste doch bitte die genaue Fehlermeldung (was nicht gefunden wird).
Ich würde den RunAs-Befehl sinngemäß so schreiben:
RunAs ...... ".\inst.bat /k"
(wenn /k der Parameter ist, der zur inst.bat gehört).
Gruß Biber
ich bin auch vorsichtig mit einer Ferndiagnose, aber...
..was zumindest für das Betriebssystem bzw. auch für den RunAs-Befehl missverständlich sein könnte:
- in Thread oben sprachen wir noch von dem Start-Befehl. Der, zu dem ich die Hilfe "Start /?" gepostet habe.
- hier, wenn ich das richtig lese, benutzt Du auch eine Start.bat
-und in der RunAs-Zeile endet das mit "RunAs .... Start inst.bat /k"
Stell auf jeden Fall sicher, dass auch das doofe Windows mitbekommt, welche Start und welche Inst.bat gemeint ist und zu wem der Parameter /k gehört.
Also Pfadangaben, Dateiendungen und Anführungszeichen dazu.
Vielleicht hilft das schon - sonst poste doch bitte die genaue Fehlermeldung (was nicht gefunden wird).
Ich würde den RunAs-Befehl sinngemäß so schreiben:
RunAs ...... ".\inst.bat /k"
(wenn /k der Parameter ist, der zur inst.bat gehört).
Gruß Biber