2017-03-28 3 views
1

Ich möchte zwei Unterzeichenfolge aus meinem Dateinamen abrufen, um Ordner String zu erstellen.
Mein Dateiname ist "SM-SM-ABC_ab12 cd34_AA 11_abc123.txt"
hier "AB12 CD34" ist die 1. Ordner und "AA 11" 2nd wird Ordner
ich einen Code geschrieben, aber nach @Compo Code hinzufügen I ma Datei konnte nicht in das Verzeichnis verschoben werden. Ich möchte mehrere Dateien in die entsprechenden Ordner verschieben. Kann jemand helfen was ist falsch?Erstellen Sie einen Ordner mit Teilzeichenfolge von Dateiname

@Echo Off 

set Path1= d:\A 
:: SDate=DAYMONTHYEAR FORMAT of Systemdate 
echo %Path1% 
set SDate=%date:~7,2%%date:~4,2%%date:~10,4% 
echo %SDate% 

::Variable for folder path 

Pushd %Path1% 
for %%i in (*.*) do SET "FPath=%%~ni" 
For /F "Tokens=2-3 Delims=_" %%A In ("%FPath%") Do (
    Set "FoldOne=%%A" 
    Set "FoldTwo=%%B" 
if not exist "%Path1%\%FoldOne%\%FoldOne%\%SDate%" (
    mkdir "%Path1%\%FoldOne%\%FoldOne%\%SDate%") 
    move %Path1%\* "%Path1%\%FoldOne%\%FoldTwo%\%SDate%\" 
echo test %Path1% 
echo test %FPath% 
) 

GoTo :EOF 

Antwort

1

Ist es das, was Sie erreichen möchten?

@Echo Off 

Set "FPath=SM-SM-ABC_ab12cd34_AA11_abc123.txt" 

For /F "Tokens=2-3 Delims=_" %%A In ("%FPath%") Do (
    Set "FoldOne=%%A" 
    Set "FoldTwo=%%B") 

Echo(%%FoldOne%%=%FoldOne% 
Echo(%%FoldTwo%%=%FoldTwo% 

Timeout -1 
GoTo :EOF 

[Bearbeiten /]
Der folgende Code kann Ihnen eine Lösung für Ihre aktualisierten Anforderungen bieten:

@Echo Off 
Set "Path1=D:\A" 
If /I Not "%CD%"=="%Path1%" Pushd "%Path1%" 2>Nul || Exit/B 
For /F "EOL=L" %%A In ('WMIC OS GET LocalDateTime') Do For %%B In (%%~nA 
) Do Set "SDate=%%B" 
Set "SDate=%SDate:~6,2%%SDate:~4,2%%SDate:~,4%" 
For %%A In ("*_*_*_*.*") Do Call :Sub "%%A" 
Timeout -1 
GoTo :EOF 

:Sub 
For /F "Tokens=2-3 Delims=_" %%A In (%1) Do If Not "%%A"=="" If Not "%%B"=="" (
    If Not Exist "%%A\%%B\%SDate%\" MD "%%A\%%B\%SDate%" 
    Move %1 "%%A\%%B\%SDate%") 
+0

Bingo ...! Aber ich habe Zweifel. Können Sie bitte erklären .. Wie Sie Ordner zwei Name in B übergeben haben. Es funktioniert auch für einzelne Datei, wenn ich mehrere Dateien mit demselben Format habe. – Ashu

+0

Ich teile den Dateinamen in vier Token auf, die jeweils durch einen Unterstrich getrennt sind. Token 1 = SM-SM-ABC, Token 2 = ab12cd34, Token 3 = AA11, Token 4 = abc123.txt. Ich fragte nach Tokens 2 und 3, die effektiv %% A und %% B sind. – Compo

+0

Hey @Compo Danke. Ich habe meine Frage geändert. und benutzte dein Skript. Kannst du bitte nochmal checken und helfen? – Ashu

Verwandte Themen