我需要將幾個文件從一個文件夾移動到子文件夾。我的文件夾結構已經準備就緒。比較文件名子串與文件夾名稱子串並移動
文件當前文件夾:D:\AB\*.*
的文件名是: SS-AA-Report-Temp File for Script Testing-Daily-31March.txt
目標文件夾:D:\AB\Pm 1.1 File For Script\Daily\
如何檢查文件名與文件夾名稱子串和移動?
注意我有這樣的多個文件。
set Path1= d:\AB
Pushd %Path1%
echo %Path1%
for %%i in (*.*) do SET "FName=%%~ni"
For /F "Tokens=4-5 Delims=-" %%A In ("%FName%") Do (
Set "FoldOne=%%A"
Set "FoldTwo=%%B"
)
echo out %RDate%
mkdir %Path1%\"%FoldOne%"\"%FoldTwo%"\%RDate%
move %Path1%\"%FName%".* %Path1%\"%FoldOne%"\"%FoldTwo%"\%RDate%\
編輯:
文件名格式:
A-A-Format-Here First connectivity install on Day 0 regurlarly-Daily-All-2017-03-27-09-31-16.xls
A-A-Format-Already First connectivity with 10 days created-Weekly-All-2016-11-28-10-01-02.csv
A-A-Report-withname 1.2 Sample Report (Network Plan Report)-Daily-Detail-2017-01-03-23-53.xls
A-A-Report-Nextreport 1.2 Sample Report (Network Plan Report)-Weekly-Detail-2017-01-03-23-02-53.csv
現在我的文件夾結構是:
D:\AB\Pm 1.1 First connectivity install on Day 0\Daily\05042017
D:\AB\Pm 2.1 First connectivity with 10 days\Weekly\29032017
D:\AB\Pm 1.2 Sample Report\Daily\05042017
D:\AB\Pm 1.2 Sample Report\Weekly\29032017
這裏是批處理文件我已經:
set Path1= d:\AB
Pushd %Path1%
echo %Path1%
for %%i in (*.*) do SET "FName=%%~ni"
For /F "Tokens=4-5 Delims=-" %%A In ("%FName%") Do (
Set "FoldOne=%%A"
Set "FoldTwo=%%B"
)
echo 1 %FoldOne%
echo 3 %FoldTwo%
IF %FoldTwo% == Daily (
echo here Daily
For /F UseBackQ %%A In (
`PowerShell "(Get-Date).AddDays(-1).ToString('ddMMyyyy')"`
) Do (Set "RDate=%%A"
echo ffor %RDate%
)
)
IF %FoldTwo% == Weekly (
Echo Weekly
For /F UseBackQ %%A In (
`PowerShell "(Get-Date).AddDays(-7).ToString('ddMMyyyy')"`
) Do (Set "RDate=%%A"
echo %RDate%
)
)
mkdir %Path1%\"%FoldOne%"\"%FoldTwo%"\%RDate%
move %Path1%\"%FName%".* %Path1%\"%FoldOne%"\"%FoldTwo%"\%RDate%\
Pushd d:\
GoTo :EOF
RDate在哪裏設置?你知道'fold1'將包含一個前導空間嗎? 「p1.1」在哪裏出現?您是否希望刪除「Temp」和「Testing」字符串 - 這些是唯一的字符串,它們會一直出現嗎? – Magoo
第一個錯誤是等號'set Path1 = C:\ Main'之後的空格,Windows命令解釋程序在將字符串分配給環境變量時不會省略該空格。刪除此空格字符。第二個錯誤是,整個目錄/文件字符串必須用雙引號括起來,而不是其中的部分。因此,使用'mkdir'%Path1%\%FoldOne%\%FoldTwo%\%RDate%「'和'移動」%Path1%\%FName%。*「」%Path1%\%FoldOne%\%FoldTwo%\% RDATE%\「'。要獲得任何命令的幫助,請打開命令提示符窗口並使用'/?'作爲參數運行命令。用'set /?'和'for /?'試試看,並閱讀輸出幫助頁。 – Mofi
@Magoo感謝您的回覆,Rdate是在系統日期設置的文件夾名稱。 Temp和Testing只是用來解釋需求。 我的基礎要求是我需要匹配文件夾名稱的子字符串與文件名的子字符串,然後將該文件移動到各自的文件夾中,我也會有這樣的多個文件,並希望將它們全部移動。 – Ashu