我需要将几个文件从一个文件夹移动到子文件夹。我的文件夹结构已经准备就绪。比较文件名子串与文件夹名称子串并移动
文件当前文件夹: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