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

Ordnernamen mit Variablen erstellen bzw. verändern

Frage Entwicklung Batch & Shell

Mitglied: Ovis

Ovis (Level 1) - Jetzt verbinden

13.02.2006, aktualisiert 15.02.2006, 8357 Aufrufe, 6 Kommentare

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
Mitglied: Petrof
14.02.2006 um 00:11 Uhr
Hallo,

der war nicht schlecht!

Nimm einfach das Leerzeichen am Ende der dritten Zeile weg!


Gruß
Peter
Bitte warten ..
Mitglied: Ovis
14.02.2006 um 00:30 Uhr
.... 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
Bitte warten ..
Mitglied: Petrof
14.02.2006 um 00:46 Uhr
Wieder die 3 Zeile

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

Bitte keine Leerzeichen am Ende

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

grüsse ovis
Bitte warten ..
Mitglied: Biber
14.02.2006 um 19:52 Uhr
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
Bitte warten ..
Mitglied: Ovis
15.02.2006 um 14:44 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (29)

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 ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...