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

in der FOR Schleife Werte aktualisieren

Frage Entwicklung Batch & Shell

Mitglied: Dino2002

Dino2002 (Level 1) - Jetzt verbinden

11.11.2008, aktualisiert 23:52 Uhr, 4489 Aufrufe, 3 Kommentare

Hallo,

ich möchte mit einer Batch FOR Schleife nach Dateien in dem Ordner "local" suchen und diese anschließend zum Ordner "remote" verschieben und dabei den Dateinamen mit Datum und Zeit erweitern. Es funktioniert soweit, allerdings wird das Datum bei einem erneuten Aufruf der FOR Schleife beibehalten. Sprich, wenn ich 100 Dateien verschieben dann haben alle Dateien die gleiche Uhrzeit. Wie kann ich in einer FOR Schleife die Uhrzeit aktualisieren? Ich möchte jedoch die verschobenen Dateien nicht nachträglich verarbeiten "umbenennen" sondern alles mit einem Abwasch erledigen.

if "%1"=="" (
start /WAIT /B cmd.exe /V:on /C "%~0" run!
goto:eof
)

SETLOCAL

SET LOCAL_DIR=C:\Temp\local
SET REMOTE_DIR=C:\Temp\remote

FOR %%i IN (%LOCAL_DIR%\*.*) DO (

SET TIMESTP=%date:~-4%-%date:~-7,2%-%date:~-10,2%_%time:~-11,2%%time:~-8,2%%time:~-5,2%
MOVE /Y "%%i" "%REMOTE_DIR%\%%~ni_!TIMESTP!.txt"
)
Mitglied: bastla
11.11.2008 um 18:53 Uhr
Hallo Dino2002!

Du verwendest zwar "delayedExpansion" (das Kunststück mit dem "CMD"-Aufruf kannst Du aber eigentlich einsparen und "setlocal enabledelayedexpansion" dafür verwenden), allerdings musst Du natürlich auch %date% und %time% "verzögert" auflösen, also etwa:
01.
@echo off & SETLOCAL enabledelayedexpansion 
02.
 
03.
SET LOCAL_DIR=C:\Temp\local 
04.
SET REMOTE_DIR=C:\Temp\remote 
05.
 
06.
FOR %%i IN (%LOCAL_DIR%\*.*) DO ( 
07.
    SET TIMESTP=!date:~-4!-!date:~-7,2!-!date:~-10,2!_!time:~-11,2!!time:~-8,2!!time:~-5,2! 
08.
    MOVE "%%i" "%REMOTE_DIR%\%%~ni_!TIMESTP!.txt" 
09.
)
Da wir schon bei Überflüssigem waren: Der Schalter "/Y" wird für "MOVE" in einem Batch nicht benötigt ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
11.11.2008 um 19:10 Uhr
Moin Dino2002 und bastla,

...wobei sich mir die Frage aufdrängt, ob denn dieses kryptische Gewurschtel den erhofften Zusatznutzen bringt....

Wieso ist es denn für kommende Generationen von Bedeutung oder erhaltenswert zu wissen, ob die Datei Readme.txt denn nun um 19:04:34 oder um 19:04:37 geMOVED wurde???

Ich würde mir den Heckmeck ersparen und alle von EINEM Job (bzw. Batch) kopierten Dateien mit EINEM Zeitstempel versehen.
Das macht es auch einfacher, wenn Du mal einen kompletten Lauf löschen oder auch nur filtern willst.

Also: einmal "SET TIMESTP=20081111_190820" vor der FOR-Anweisung und kein Firlefanz mit Zeitstempel je Datei ermitteln.

Grüße
Biber
Bitte warten ..
Mitglied: Dino2002
11.11.2008 um 23:52 Uhr
Hallo Bastla und Biber,

danke für die schnelle und sehr hilfsreiche Unterstützung. Ich hätte noch erwähnen müssen dass die Batch anschließend noch erweitert wird um für jede übertragene Datei ein separates Logfile zu erstellen - sonst hätte ich sicherlich den einfacheren Weg gewählt

*freu*

Viele Grüße

Dino2002
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Powershell - Werte in Variable durch Schleife erweitern bzw. ändern (5)

Frage von ralfkausk zum Thema Batch & Shell ...

Windows Server
Treiberpaket aktualisieren auf Client (2)

Frage von Adnan88 zum Thema Windows Server ...

Microsoft Office
Excel: Wert aus mehreren Datein suchen und zugehörige Werte ausgeben (10)

Frage von RubyLissy zum Thema Microsoft Office ...

Datenbanken
gelöst Access 2010 UnterFormular filtern bzw. aktualisieren (2)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Neue Wissensbeiträge
RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(2)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Router & Routing

PfSense auf Supermicro Intel Xeon D-15x8 SoC Bare Bone

Tipp von Dobby zum Thema Router & Routing ...

Heiß diskutierte Inhalte
Windows 10
Windows für Privatanwender "nicht mehr handhabbar" (26)

Frage von FA-jka zum Thema Windows 10 ...

LAN, WAN, Wireless
Brauche Hilfe: Mit (schnellem) WLAN Strecke überbrücken (23)

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

Basic
Programmierung von Windows Programmen (10)

Frage von Ghost108 zum Thema Basic ...