Batch file 批处理文件以根据月份移动文件(&A);年月日修改为带有YYYY_MM的文件夹
任何人都可以帮助我创建一个批处理文件,以便根据年月日修改的xml文件将*.xml文件从X文件夹移动到YYYY\U MM文件夹 我不确定在循环中放什么Batch file 批处理文件以根据月份移动文件(&A);年月日修改为带有YYYY_MM的文件夹,batch-file,file-io,Batch File,File Io,任何人都可以帮助我创建一个批处理文件,以便根据年月日修改的xml文件将*.xml文件从X文件夹移动到YYYY\U MM文件夹 我不确定在循环中放什么 @echo off echo Date is %Date% dir /od/b "C:\Users\*.xml" > test.log for /F %%f in (test.log) DO ( ) 首先,我想将set var=%%~tf放入循环中,以便以后我可以使用var上的子字符串来获取月份和年份,并基于此将xml文件移动到YYYY
@echo off
echo Date is %Date%
dir /od/b "C:\Users\*.xml" > test.log
for /F %%f in (test.log) DO
(
)
首先,我想将
set var=%%~tf
放入循环中,以便以后我可以使用var上的子字符串来获取月份和年份,并基于此将xml文件移动到YYYY_MM文件夹中,但它似乎不起作用。试试这个[否ROBOCOPY必需]:
@echo off
set "src=C:\test"
set "dest=C:\test"
for %%F in ("%src%\*") do (
for /f "tokens=1,2,3 delims=/ " %%A in ("%%~tF") do (
if not exist "%dest%\%%C_%%A" mkdir "%dest%\%%C_%%A"
move "%%~fF" "%dest%\%%C_%%A"
)
)
对于任何想要移动子目录的人来说,除了r3ap3r的答案之外,这里有一个解决方案。基本上,只需添加另一个带有/d标志的for循环,即可通过子目录进行循环:
@echo off
set "src=..\"
set "dest=..\archive"
for %%F in ("%src%\*") do (
for /f "tokens=1,2,3 delims=/ " %%A in ("%%~tF") do (
if not exist "%dest%\%%C_%%A" mkdir "%dest%\%%C_%%A"
move "%%~fF" "%dest%\%%C_%%A"
)
)
for /d %%D in ("%src%\*") do (
for /f "tokens=1,2,3 delims=/ " %%A in ("%%~tD") do (
if not exist "%dest%\%%C_%%A" mkdir "%dest%\%%C_%%A"
move "%%~fD" "%dest%\%%C_%%A"
)
)
谢谢你,我总是忘记这类任务的目录创建部分。robocopy的使用只是为了避免本地化windows版本中不同日期格式的常见问题。但是,正如您所展示的,它是
不需要的
只是一个方便的选项。%%~tF
也是本地化的,并且作为一个通用解决方案不可靠,因为格式在任何给定的计算机上都可以更改。使用机器人技术可能是更好的方法。