Top-Themen

Aktuelle Themen (A bis Z)

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

Batch-Datei Dateien umbenennen und verschieben

Frage Entwicklung Batch & Shell

Mitglied: maijinace

maijinace (Level 1) - Jetzt verbinden

17.05.2013 um 13:24 Uhr, 3966 Aufrufe, 5 Kommentare, 1 Danke

Hallo Liebe Leute, habe eine bitte an euch ich suche mich schon seit Stunden dumm und dämlich und finde keine lösung. Leider bin ich im Bereich "Batch-Scripte" schreiben nicht besonders gut, aber bis jetzt habe ich mir immer zu helfen gewusst nun bin ich beim optimieren meiner alten Batchdateien gewesen, aber ich komme mit diesen befehlen die es gibt nicht klar weil sie mir nicht viel weiterhelfen ohne Bedeutung

Hier mein Fall ich habe Mehrere Ordner (max. 17) jeden Tag kommen pro Ordner eine Datei rein, diese müssen umbenannt werden und in den übergeordneten Ordner verschon werden.

Die Dateien schauen so aus das vom letzten Werktag das Datumdrauf ist und dann"_cremul.dat" angehängt ist zB: 20130516_cremul.dat
Dies soll aber künftig RTD_PSK_GS010_20130516 heißen. Ich habe das sehr einfach gelöst, aber es ist eine Interaktion vom Enduser (=ich) nötig.

Siehe mein Script unten. Ich will dass wenn ich den BatchDatei starte das es automatisch macht ohne das ich den letzten Werktag eintippen muss. Ich habe es schon mit Codes wie diesen hier versucht, leider vergebens: for %%f in (*_*.dat) do @for /f %%n in ("%%~nf") do ren "%%~f" "%%n%%~xf" Da ich auch den sinn nicht verstehe kann ich nicht nach Fehlern suchen.
habt ihr für mich Vorschläge? Danke jetzt schon mal für die Hilfen! Melde mich am Dienstag wieder.

REM ------------------------------------------------------------
ECHO Datum vom letzten Werktag (JJJJMMTT) eingeben und weiter mit Enter
set SORTDATE=%date:~-4%%date:~3,2%%date:~0,2%
ECHO Heute ist der %SORTDATE%
ECHO.
set /P x=

move "U:\_Temp\021_FRK\RTD\6000096770007EUR\201?????_cremul.dat" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB010_%X%"
move "U:\_Temp\021_FRK\RTD\6000096771714EUR\201?????_cremul.dat" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB171_%X%"
move "U:\_Temp\021_FRK\RTD\6000096771721EUR\201?????_cremul.dat" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB172_%X%"
move "U:\_Temp\021_FRK\RTD\6000096771738EUR\201?????_cremul.dat" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB173_%X%"
move "U:\_Temp\021_FRK\RTD\6000096771745EUR\201?????_cremul.dat" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB174_%X%"
move "U:\_Temp\021_FRK\RTD\6000096771752EUR\201?????_cremul.dat" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB175_%X%"
move "U:\_Temp\021_FRK\RTD\6000096771769EUR\201?????_cremul.dat" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB176_%X%"
move "U:\_Temp\021_FRK\RTD\6000096771776EUR\201?????_cremul.dat" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB177_%X%"
move "U:\_Temp\021_FRK\RTD\6000096771783EUR\201?????_cremul.dat" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB178_%X%"
move "U:\_Temp\021_FRK\RTD\6000096771790EUR\201?????_cremul.dat" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB179_%X%"
move "U:\_Temp\021_FRK\RTD\6000096771800EUR\201?????_cremul.dat" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB180_%X%"
move "U:\_Temp\021_FRK\RTD\6000096771817EUR\201?????_cremul.dat" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB181_%X%"
move "U:\_Temp\021_FRK\RTD\6000096771824EUR\201?????_cremul.dat" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB182_%X%"
move "U:\_Temp\021_FRK\RTD\6000096778023EUR\201?????_cremul.dat" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB202_%X%"
move "U:\_Temp\021_FRK\RTD\6000096778030EUR\201?????_cremul.dat" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB203_%X%"
move "U:\_Temp\021_FRK\RTD\6000096778119EUR\201?????_cremul.dat" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB811_%X%"
move "U:\_Temp\021_FRK\RTD\6000096778418EUR\201?????_cremul.dat" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB841_%X%"

ECHO.

ECHO Die Dateien wurden umbenannt und verschoben! Leere Ordner muessen nicht geloescht werden!
Mitglied: bastla
17.05.2013 um 15:53 Uhr
Hallo maijinace und willkommen im Forum!

Wozu musst Du denn das Datum des letzten Werktages wissen - befinden sich auch "*_cremul.dat"-Dateien von anderen Tagen im Ordner? Wenn nein, könnten doch einfach alle entsprechenden Dateien verschoben und umbenannt werden, also etwa
01.
for %%d in ("U:\_Temp\021_FRK\RTD\6000096770007EUR\201?????_cremul.dat") do ( 
02.
    for /f "delims=_" %%v in ("%%~nd") do echo move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB010_%%v" 
03.
)
Zu Deinen 17 Ordnern: Wenn das die einzigen Ordner sind, deren Name mit "60000" beginnt, könntest Du auch dafür eine Schleife verwenden:
01.
for /d %%o in ("U:\_Temp\021_FRK\RTD\60000*") do ( 
02.
    for %%d in ("%%d\201?????_cremul.dat") do ( 
03.
        for /f "delims=_" %%v in ("%%~nd") do echo move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB010_%%v" 
04.
05.
)
Bei beiden Ansätzen ist übrigens ein "echo" vor dem "move" als Sicherung eingebaut - dadurch werden die Verschiebebefehle nur angezeigt, aber nicht ausgeführt ...
Sollten sich tatsächlich neben den Dateien des letzten Werktages auch zB Dateien von heute befinden, könntest Du letztere ausfiltern - das wäre einfacher, als per Batch (oder Script) das Datum des letzten Werktages zu ermitteln (Stichwort "Feiertage") ...

Grüße
bastla
Bitte warten ..
Mitglied: Endoro
17.05.2013 um 21:43 Uhr
Hallo maijinace,

zum Raussuchen von normalen Werktagen kannst du cal verwenden. Aber ein CLI mit den Feiertagen hab ich auch noch nicht gesehen.

Gruss!
Bitte warten ..
Mitglied: bastla
17.05.2013, aktualisiert um 22:17 Uhr
@ Endoro
Um den letzten Werktag (also Mo - Fr) zu erhalten würde auch ein kleines VBScript (verpackt in einen Batch) genügen:
01.
@echo off & setlocal 
02.
set "Datum=%date%" 
03.
:: Zum Testen kann auch ein konkretes Datum eingesetzt werden: 
04.
:: set "Datum=20.05.2013" 
05.
 
06.
set "LWT=%temp%\LetzterWerktag.vbs" 
07.
>"%LWT%" echo D=DateValue(WScript.Arguments(0))-1:W=Weekday(D,7):WScript.Echo D+(W^<3)*W 
08.
for /f %%i in ('cscript //nologo "%LWT%" %Datum%') do set "LD=%%i" 
09.
echo %Datum% --^> %LD%
Grüße
bastla
Bitte warten ..
Mitglied: maijinace
21.05.2013 um 07:38 Uhr
Lieber bastla,

vielen Dank für deine Hilfe die 1. Variante hat super geklappt. Zur 2. Variante: Ich kann leider keine Schleife einfügen weil die Dateien im übergeordneten Ordner sonst alle gleich heißen würden und sie sollen alle anders heißen. Die Dateien kommen täglich mit dem Datum vom letzten Werktag. Ich weiß wie man mit Batch den heutigen Tag einfügt aber nicht den von letzten Werktag, und manchmal gibt es Tage, wo wir arbeiten und die Banken nicht deswegen musste ich es immer manuell eingeben. Aber mit deiner Variante kopiert er einfach den Text

Wenn ich mich nicht irre müsste er auch falls es jemals dazu kommen sollte das 2 Dateien von 2 Tagen drinnen sind beide gleichzeitig und richtig umbenennen oder?

Dein Script für mich sieht jetzt so aus:

for %%d in ("U:\_Temp\021_FRK\RTD\6000096770007EUR\201?????_cremul.dat") do (for /f "delims=_" %%v in ("%%~nd") do move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB010_%%v")
for %%d in ("U:\_Temp\021_FRK\RTD\6000096771714EUR\201?????_cremul.dat") do (for /f "delims=_" %%v in ("%%~nd") do move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB171_%%v")
for %%d in ("U:\_Temp\021_FRK\RTD\6000096771721EUR\201?????_cremul.dat") do (for /f "delims=_" %%v in ("%%~nd") do move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB172_%%v")
for %%d in ("U:\_Temp\021_FRK\RTD\6000096771738EUR\201?????_cremul.dat") do (for /f "delims=_" %%v in ("%%~nd") do move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB173_%%v")
for %%d in ("U:\_Temp\021_FRK\RTD\6000096771745EUR\201?????_cremul.dat") do (for /f "delims=_" %%v in ("%%~nd") do move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB174_%%v")
for %%d in ("U:\_Temp\021_FRK\RTD\6000096771752EUR\201?????_cremul.dat") do (for /f "delims=_" %%v in ("%%~nd") do move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB175_%%v")
for %%d in ("U:\_Temp\021_FRK\RTD\6000096771769EUR\201?????_cremul.dat") do (for /f "delims=_" %%v in ("%%~nd") do move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB176_%%v")
for %%d in ("U:\_Temp\021_FRK\RTD\6000096771776EUR\201?????_cremul.dat") do (for /f "delims=_" %%v in ("%%~nd") do move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB177_%%v")
for %%d in ("U:\_Temp\021_FRK\RTD\6000096771783EUR\201?????_cremul.dat") do (for /f "delims=_" %%v in ("%%~nd") do move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB178_%%v")
for %%d in ("U:\_Temp\021_FRK\RTD\6000096771790EUR\201?????_cremul.dat") do (for /f "delims=_" %%v in ("%%~nd") do move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB179_%%v")
for %%d in ("U:\_Temp\021_FRK\RTD\6000096771800EUR\201?????_cremul.dat") do (for /f "delims=_" %%v in ("%%~nd") do move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB180_%%v")
for %%d in ("U:\_Temp\021_FRK\RTD\6000096771817EUR\201?????_cremul.dat") do (for /f "delims=_" %%v in ("%%~nd") do move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB181_%%v")
for %%d in ("U:\_Temp\021_FRK\RTD\6000096771824EUR\201?????_cremul.dat") do (for /f "delims=_" %%v in ("%%~nd") do move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB182_%%v")
for %%d in ("U:\_Temp\021_FRK\RTD\6000096778023EUR\201?????_cremul.dat") do (for /f "delims=_" %%v in ("%%~nd") do move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB202_%%v")
for %%d in ("U:\_Temp\021_FRK\RTD\6000096778030EUR\201?????_cremul.dat") do (for /f "delims=_" %%v in ("%%~nd") do move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB203_%%v")
for %%d in ("U:\_Temp\021_FRK\RTD\6000096778119EUR\201?????_cremul.dat") do (for /f "delims=_" %%v in ("%%~nd") do move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB811_%%v")
for %%d in ("U:\_Temp\021_FRK\RTD\6000096778418EUR\201?????_cremul.dat") do (for /f "delims=_" %%v in ("%%~nd") do move "%%d" "U:\_Temp\021_FRK\RTD\RTD_PSK_GB841_%%v")

Danke an endoro für das Antworten.

lg maijinace
Bitte warten ..
Mitglied: bastla
21.05.2013 um 09:43 Uhr
Hallo maijinace!

Mit der Schleife hast Du natürlich recht - ich hatte zu oberflächlich gelesen und nicht darauf geachtet, dass ja aus zB
6000096770007EUR
dann
RTD_PSK_GB010
werden muss (es also keinen zu übernehmenden Bestandteil im Namen des Ordners gibt) - ließe sich zwar mit einer Zuordnungsliste lösen, aber wenn das Verschieben die einzige Aktion ist, um die es geht, würde die Liste mehr Aufwand bedeuten als Deine jetzige Version ...
Wenn ich mich nicht irre müsste er auch falls es jemals dazu kommen sollte das 2 Dateien von 2 Tagen drinnen sind beide gleichzeitig und richtig umbenennen oder?
Wenn es kein Problem ist, dass die beiden Dateien am gleichen Tag verschoben werden, also nicht zB die aktuelle(re) Datei noch im Ordner bleiben muss, sollte das klappen, da sich ja die Namen auch nach dem Verschieben noch durch das Datum unterscheiden.

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch Datei: PDF Dateien verschieben, umbenennen und löschen
Beitrag von 4 Kommentare

Frage von F0rcehunter zum Thema Batch & Shell

Batch & Shell
Batch-Skript Schleife älteste Datei umbenennen
Beitrag von 9 Kommentare

Frage von pentadd zum Thema Batch & Shell

Batch & Shell
Datei nach Erstellungsdatum verschieben
Beitrag von 2 Kommentare

Frage von Kugelschreiber1 zum Thema Batch & Shell

Batch & Shell
Umbenennen entpackter Dateien nach Dateinamen der rar- zip-Datei
Beitrag von

Frage von windows-nutzer zum Thema Batch & Shell

Neue Wissensbeiträge
MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Beitrag von 3 Kommentare

Anleitung von colinardo zum Thema MikroTik RouterOS

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Beitrag von

Information von BassFishFox zum Thema Sicherheit

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Beitrag von 5 Kommentare

Information von admtech zum Thema Administrator.de Feedback

Vmware

VMware Desktopprodukte sind verwundbar

Beitrag von

Information von Penny.Cilin zum Thema Vmware

Heiß diskutierte Inhalte
Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail
Beitrag von 24 Kommentare

Frage von ahstax zum Thema Visual Studio

Windows Netzwerk
Netzwerk Neustrukturierung
Beitrag von 16 Kommentare

Frage von IT-Dreamer zum Thema Windows Netzwerk

Windows Server
RDP macht Server schneller???
Beitrag von 16 Kommentare

Frage von JaniDJ zum Thema Windows Server

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Beitrag von 15 Kommentare

Frage von Akcent zum Thema Windows 10