Ordnernamen mit Variablen erstellen bzw. verändern
Hallo und 'nabend zusammen, ich möchte aus einer Variablen einen Ordnamen erstellen bin aber mittlerweile etwas konfus.
Ich habe jetzt einige Abende (z.T. auch Wochenenden) hier verbracht, auf der Suche nach einer Lösung für meine Batch Probleme. Zum größten Teil habe ich alles hier gefunden um mein automatisches Update meiner Virensignaturen und von Spybot zu starten.
Kenne mich mit Batch Programmierung nur wenig aus und kann mir daher alles nur zusammen Wursteln, aber wie gesagt es läuft.
Allerdings komme ich jetzt nicht mehr weiter, mit meiner Kleinigkeit. Im Verlauf der nachfolgenden Prozedur möchte ich einen Ordnernamen aus der zuletzt eingelesenen Zipdatei erstellen. Soweit so gut, aber der Ordner soll nicht z.B. Dat-4692.zip heißen, sondern Dat.4692
Vielleicht sehe ich den Wald vor lauter Bäumen nicht mehr, aber ich krieg´s nicht hin ....
for /F %%i in ('dir dat-*.zip /b /o:d') do set var=%%i
echo %var%
set vv=%var:~0,4%
set ww=%var:~4,4%
md "%vv%%ww%" 'da macht er ein Blank zwischen die Variablen?!
Danke für jeden Hinweis schon mal im Voraus (dann kann ich wieder ruhig schlafen).
grüsse Ovis
p.s.: meine automatik (ich weiß, die programme können das auch, aber wer will´s immer einfach .....)
cmdow @ /HID
@echo off
set verz="D:\Progra~1\Gemein~1\Networ~1\Engine"
set zielverz=c:\temp2\dat-fi~1
set logfile=%zielverz%\autoupdaten.log
set zielpc=192.211.99.7
echo ============ BEGINN Update von Mcafee und Spybot %date% %username% %computername% %time:~0,8% ============================ >> %logfile%
:Verbindungstest
echo ping -n 2 %zielpc% | find "TTL=" >> %logfile%
ping -n 2 %zielpc% | find "TTL=" >> %logfile%
echo goto %errorlevel% >> %logfile%
goto %errorlevel% >> %logfile%
:0
rem Verbindung OK
goto :laufw
:1
rem Keine Verbindung
goto exit2
:laufw
echo if not exist Y:\ ( start /W %systemroot%\system32\wscript.exe "%zielverz%\laufhol2.vbs" ) >> %logfile%
if not exist Y:\ ( start /W %systemroot%\system32\wscript.exe "%zielverz%\laufhol2.vbs" )
echo if not exist Y:\ goto exit2 >> %logfile%
if not exist Y:\ goto exit2
:step1
rem ------------------------ Kopieren von Y:\Dat*.zip nach zielverz
echo if not exist y:\dat*.zip goto step2 >> %logfile%
if not exist y:\dat*.zip goto step2
echo for /F %%i in ('dir y:\dat*.zip /b /o:d') do set kop1=%%i >> %logfile%
for /F %%i in ('dir y:\dat*.zip /b /o:d') do set kop1=%%i >> %logfile%
echo robocopy "y:" %zielverz%\ %kop1% /Z /R:5 /W:2 >> %logfile%
robocopy "y:" %zielverz%\ %kop1% /Z /R:5 /W:2 >> %logfile%
echo ============================================
goto %errorlevel%
:0
echo ----------------- Nix zu kopieren bei STEP1 >> %logfile%
goto step2 >> %logfile%
:1
rem -------------------------- Verarbeitung geht los
echo if not exist %zielverz%\dat*.zip goto step2 >> %logfile%
if not exist %zielverz%\dat*.zip goto step2 >> %logfile%
echo for /F %%i in ('dir %zielverz%\dat*.zip /b /o:d') do set var=%%i >> %logfile%
for /F %%i in ('dir %zielverz%\dat*.zip /b /o:d') do set var=%%i >> %logfile%
echo unzip -o %zielverz%\%Var% -d %verz% >> %logfile%
unzip -o %zielverz%\%Var% -d %verz% >> %logfile%
ping /n 4 localhost >nul
goto step2
:2
echo Datei(en) gelöscht im Zielverz wg. manuellem Löschen in Quellverz!! >> %logfile%
goto step2
:16
echo ======== ! Parameterfehler! >> %logfile%
goto exit4
:step2
rem -------------------------- Kopieren von y:\Spybot*.exe nach zielverz
echo if not exist y:\spybotsd_includes.exe goto exit4 >> %logfile%
if not exist y:\spybotsd_includes.exe goto exit4
echo robocopy "y:" %zielverz%\ spybotsd_includes.exe /Z /R:5 /W:2 >> %logfile%
robocopy "y:" %zielverz%\ spybotsd_includes.exe /Z /R:5 /W:2 >> %logfile%
echo ============================================ >> %logfile%
goto %errorlevel%
:0
echo ----------------- Nix zu kopieren bei STEP2 >> %logfile%
goto exit3 >> %logfile%
:1
rem -------------------------- Verarbeitung geht los
echo if not exist y:\spybotsd_includes.exe goto exit4 >> %logfile%
if not exist y:\spybotsd_includes.exe goto exit4
echo ============================================ >> %logfile%
echo %zielverz%\spybotsd_includes.exe /S >> %logfile%
%zielverz%\spybotsd_includes.exe /S >> %logfile%
ping /n 6 localhost >nul
goto exit
:2
echo Datei(en) gelöscht im Zielverz wg. manuellem Löschen in Quellverz!! >> %logfile%
goto exit5
:16
echo ======== ! Parameterfehler! >> %logfile%
goto exit4
:exit
echo ============ ENDE Update von Mcafee und Spybot %date% %username% %computername% %time:~0,8% ============================ >> %logfile%
echo net use y: /d >> %logfile%
net use y: /d >> %logfile%
call %zielverz%\erledigt.vbs
exit
:exit2
echo ============ ENDE2 Laufwerk Y: war nicht da ! %date% %username% %computername% %time:~0,8% ============================ >> %logfile%
echo net use y: /d >> %logfile%
net use y: /d >> %logfile%
call %zielverz%\fehler.vbs
exit
:exit3
echo ============ ENDE3 Es gab NICHTS upzudaten ! %date% %username% %computername% %time:~0,8% ============================ >> %logfile%
echo net use y: /d >> %logfile%
net use y: /d >> %logfile%
call %zielverz%\fehler3.vbs
exit
:exit4
echo ============ ENDE4 GROBER FEHLER ! %date% %username% %computername% %time:~0,8% ============================ >> %logfile%
echo net use y: /d >> %logfile%
net use y: /d >> %logfile%
call %zielverz%\fehler4.vbs
exit
Ich habe jetzt einige Abende (z.T. auch Wochenenden) hier verbracht, auf der Suche nach einer Lösung für meine Batch Probleme. Zum größten Teil habe ich alles hier gefunden um mein automatisches Update meiner Virensignaturen und von Spybot zu starten.
Kenne mich mit Batch Programmierung nur wenig aus und kann mir daher alles nur zusammen Wursteln, aber wie gesagt es läuft.
Allerdings komme ich jetzt nicht mehr weiter, mit meiner Kleinigkeit. Im Verlauf der nachfolgenden Prozedur möchte ich einen Ordnernamen aus der zuletzt eingelesenen Zipdatei erstellen. Soweit so gut, aber der Ordner soll nicht z.B. Dat-4692.zip heißen, sondern Dat.4692
Vielleicht sehe ich den Wald vor lauter Bäumen nicht mehr, aber ich krieg´s nicht hin ....
for /F %%i in ('dir dat-*.zip /b /o:d') do set var=%%i
echo %var%
set vv=%var:~0,4%
set ww=%var:~4,4%
md "%vv%%ww%" 'da macht er ein Blank zwischen die Variablen?!
Danke für jeden Hinweis schon mal im Voraus (dann kann ich wieder ruhig schlafen).
grüsse Ovis
p.s.: meine automatik (ich weiß, die programme können das auch, aber wer will´s immer einfach .....)
cmdow @ /HID
@echo off
set verz="D:\Progra~1\Gemein~1\Networ~1\Engine"
set zielverz=c:\temp2\dat-fi~1
set logfile=%zielverz%\autoupdaten.log
set zielpc=192.211.99.7
echo ============ BEGINN Update von Mcafee und Spybot %date% %username% %computername% %time:~0,8% ============================ >> %logfile%
:Verbindungstest
echo ping -n 2 %zielpc% | find "TTL=" >> %logfile%
ping -n 2 %zielpc% | find "TTL=" >> %logfile%
echo goto %errorlevel% >> %logfile%
goto %errorlevel% >> %logfile%
:0
rem Verbindung OK
goto :laufw
:1
rem Keine Verbindung
goto exit2
:laufw
echo if not exist Y:\ ( start /W %systemroot%\system32\wscript.exe "%zielverz%\laufhol2.vbs" ) >> %logfile%
if not exist Y:\ ( start /W %systemroot%\system32\wscript.exe "%zielverz%\laufhol2.vbs" )
echo if not exist Y:\ goto exit2 >> %logfile%
if not exist Y:\ goto exit2
:step1
rem ------------------------ Kopieren von Y:\Dat*.zip nach zielverz
echo if not exist y:\dat*.zip goto step2 >> %logfile%
if not exist y:\dat*.zip goto step2
echo for /F %%i in ('dir y:\dat*.zip /b /o:d') do set kop1=%%i >> %logfile%
for /F %%i in ('dir y:\dat*.zip /b /o:d') do set kop1=%%i >> %logfile%
echo robocopy "y:" %zielverz%\ %kop1% /Z /R:5 /W:2 >> %logfile%
robocopy "y:" %zielverz%\ %kop1% /Z /R:5 /W:2 >> %logfile%
echo ============================================
goto %errorlevel%
:0
echo ----------------- Nix zu kopieren bei STEP1 >> %logfile%
goto step2 >> %logfile%
:1
rem -------------------------- Verarbeitung geht los
echo if not exist %zielverz%\dat*.zip goto step2 >> %logfile%
if not exist %zielverz%\dat*.zip goto step2 >> %logfile%
echo for /F %%i in ('dir %zielverz%\dat*.zip /b /o:d') do set var=%%i >> %logfile%
for /F %%i in ('dir %zielverz%\dat*.zip /b /o:d') do set var=%%i >> %logfile%
echo unzip -o %zielverz%\%Var% -d %verz% >> %logfile%
unzip -o %zielverz%\%Var% -d %verz% >> %logfile%
ping /n 4 localhost >nul
goto step2
:2
echo Datei(en) gelöscht im Zielverz wg. manuellem Löschen in Quellverz!! >> %logfile%
goto step2
:16
echo ======== ! Parameterfehler! >> %logfile%
goto exit4
:step2
rem -------------------------- Kopieren von y:\Spybot*.exe nach zielverz
echo if not exist y:\spybotsd_includes.exe goto exit4 >> %logfile%
if not exist y:\spybotsd_includes.exe goto exit4
echo robocopy "y:" %zielverz%\ spybotsd_includes.exe /Z /R:5 /W:2 >> %logfile%
robocopy "y:" %zielverz%\ spybotsd_includes.exe /Z /R:5 /W:2 >> %logfile%
echo ============================================ >> %logfile%
goto %errorlevel%
:0
echo ----------------- Nix zu kopieren bei STEP2 >> %logfile%
goto exit3 >> %logfile%
:1
rem -------------------------- Verarbeitung geht los
echo if not exist y:\spybotsd_includes.exe goto exit4 >> %logfile%
if not exist y:\spybotsd_includes.exe goto exit4
echo ============================================ >> %logfile%
echo %zielverz%\spybotsd_includes.exe /S >> %logfile%
%zielverz%\spybotsd_includes.exe /S >> %logfile%
ping /n 6 localhost >nul
goto exit
:2
echo Datei(en) gelöscht im Zielverz wg. manuellem Löschen in Quellverz!! >> %logfile%
goto exit5
:16
echo ======== ! Parameterfehler! >> %logfile%
goto exit4
:exit
echo ============ ENDE Update von Mcafee und Spybot %date% %username% %computername% %time:~0,8% ============================ >> %logfile%
echo net use y: /d >> %logfile%
net use y: /d >> %logfile%
call %zielverz%\erledigt.vbs
exit
:exit2
echo ============ ENDE2 Laufwerk Y: war nicht da ! %date% %username% %computername% %time:~0,8% ============================ >> %logfile%
echo net use y: /d >> %logfile%
net use y: /d >> %logfile%
call %zielverz%\fehler.vbs
exit
:exit3
echo ============ ENDE3 Es gab NICHTS upzudaten ! %date% %username% %computername% %time:~0,8% ============================ >> %logfile%
echo net use y: /d >> %logfile%
net use y: /d >> %logfile%
call %zielverz%\fehler3.vbs
exit
:exit4
echo ============ ENDE4 GROBER FEHLER ! %date% %username% %computername% %time:~0,8% ============================ >> %logfile%
echo net use y: /d >> %logfile%
net use y: /d >> %logfile%
call %zielverz%\fehler4.vbs
exit
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 25912
Url: https://administrator.de/forum/ordnernamen-mit-variablen-erstellen-bzw-veraendern-25912.html
Ausgedruckt am: 24.12.2024 um 00:12 Uhr
6 Kommentare
Neuester Kommentar
Moin ovis,
ich weiß jetzt nicht, ob Deine Frage damit beantwortet ist.
Eine Alternative (oder zumindest eine Ergänzung) von mir:
a) ich setze die variablen immer in Anführungszeichen, um trailing blanks zu vermeiden.
for /F %%i in ('dir dat-*.zip /b /o:d') do set "var=%%~ni"
echo %var%
:: --set vv=%var:~0,4%
::-- set ww=%var:~4,4%
::-- md "%vv%%ww%"
md "%var:-=.%"
...also ein "Ersetze in %var% ALLE Bindestriche durch Punkte".
Wenn also die Datei "dat-1234.zip" heißt, wird %var% zu "dat-1234" und beim MD dann zum Verzeichnis "dat.1234".
Wenn die Datei allerdings auch "dat-12-34.zip" heißen kann, dann käme auch "dat.12.34" als Verzeichnis raus.
HTH Biber
ich weiß jetzt nicht, ob Deine Frage damit beantwortet ist.
Eine Alternative (oder zumindest eine Ergänzung) von mir:
a) ich setze die variablen immer in Anführungszeichen, um trailing blanks zu vermeiden.
for /F %%i in ('dir dat-*.zip /b /o:d') do set "var=%%~ni"
echo %var%
:: --set vv=%var:~0,4%
::-- set ww=%var:~4,4%
::-- md "%vv%%ww%"
md "%var:-=.%"
...also ein "Ersetze in %var% ALLE Bindestriche durch Punkte".
Wenn also die Datei "dat-1234.zip" heißt, wird %var% zu "dat-1234" und beim MD dann zum Verzeichnis "dat.1234".
Wenn die Datei allerdings auch "dat-12-34.zip" heißen kann, dann käme auch "dat.12.34" als Verzeichnis raus.
HTH Biber