ovis
Goto Top

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

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

Petrof
Petrof 14.02.2006 um 00:11:09 Uhr
Goto Top
Hallo,

der war nicht schlecht!

Nimm einfach das Leerzeichen am Ende der dritten Zeile weg!


Gruß
Peter
Ovis
Ovis 14.02.2006 um 00:30:36 Uhr
Goto Top
der Blitz soll mich doch beim ..... treffen, so was blödes aber auch. Mit so einem Fehler hätte ich nicht gerechnet. Großen Dank an dich.

Gibt´s eine elegantere Version den - durch einen . zu ersetzen, ausser einem Rename danach?
grüsse
Ovis
Petrof
Petrof 14.02.2006 um 00:46:42 Uhr
Goto Top
Wieder die 3 Zeile

set vv=%var:~0,3%.

Bitte keine Leerzeichen am Ende face-smile

sry
Peter
Ovis
Ovis 14.02.2006 um 17:42:22 Uhr
Goto Top
so einfach kann die Welt sein .... Jetzt funktioniert´s, wie es auch soll.
Danke Peter!

grüsse ovis
Biber
Biber 14.02.2006 um 19:52:36 Uhr
Goto Top
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
Ovis
Ovis 15.02.2006 um 14:44:37 Uhr
Goto Top
Hallo Biber,

Danke auch für deine Variante. Spannend was da alles machbar ist - ich glaube, ich werde meine Automatik wieder umbauen.
grüsse
ovis