2016-08-08 13 views
-2

ich ein Verzeichnis mit dem folgenden Aufbau haben:Windows-Batch-Skript-Namen zu ändern, mit etwas Logik

1 януари 2012 
2 февруари 2012 
1 януари 2013 

Und ich will es wie dieses yyyy-mm-dd aussehen:

2012-01-01 
2012-02-01 
2013-01-01 

Януари/февруари sind kyrillische Namen von Monaten, so dass sie leicht zu Zahlen - 01/02.

Das Skript hat grundsätzlich zu:

  1. Namen
  2. es im richtigen Format umbenennen

Ich bin sehr neu für Batch-Skript Codierung eines dir nehmen.

Also, wenn Sie mir helfen könnten, wäre es großartig.

+0

SO ist kein kostenloser Code-Schreibservice! Sie müssen Ihre eigenen Bemühungen zeigen, wenn Sie Hilfe erwarten! Bitte lerne [wie man fragt] (http://stackoverflow.com/help/how-to-ask)! – aschipfl

+2

Welches Betriebssystem verwenden Sie? –

Antwort

1

Angenommen, Sie müssen nur Ordner für януари und февруари, ersetzen C umbenennen: \ Ordner mit echten vollständigen Pfad zu Ihrem Zielverzeichnis, speichern dieses Skript test.bat, offen Cmd Prompt aus dem Skriptordner und testen Sie es. Es funktioniert gut in Win10 Englisch mit Ihren Verzeichnisnamen unabhängig von der aktuellen Cmd-Codepage.

@echo off 
setlocal enabledelayedexpansion 
set "dir=C:\Folders" 
for /f "tokens=4" %%A in ('chcp') do (
    if not %%A==855 set "enc=%%A" & chcp 855 >nul) 
for /f "tokens=1,2,3" %%G in ('dir /b /a:d "%dir%"') do (
    set "yea=%%I" & set "fold=%%G %%H %%I" 
    for /f "tokens=1,2 delims=я" %%B in ("%%H") do (
     if not %%C.==. (set mon=01) else set mon=02) 
    if %%G leq 9 (set dat=0%%G) else set dat=%%G 
    set "nfold=!yea!-!mon!-!dat!" 
    move /y "%dir%\!fold!" "%dir%\!nfold!" 
) 
if defined enc chcp !enc! >nul 
exit /b 
+0

es gibt mir "Datei nicht gefunden"? – mp3por

+0

Entschuldigung - der wahre Fehler ist "Das System kann die angegebene Datei nicht finden." kommt aus der Zeile "move/y"% dir% \! fold! ""% dir% \! nfold! ""? – mp3por

+0

hinzufügen echo! Fold !; echo! nfold! vor dem Umzug gibt die folgende Ausgabe https://postimg.org/image/kvz3enzjv/ – mp3por