正如您在对象中看到的,我需要将文件名中包含指定范围内日期的所有文件复制。
我会尝试用一个例子来解释。
我在目录中有这些文件:
我需要一个批处理文件,询问我要在另一个目录中复制文件的开始日期和最后日期。
我的代码是:
@echo off
set /p StartDate= Inserire la data di INIZIO dei log da spostare (formato: AAAAMMDD)
set /p LastDate= Inserire la data di FINE dei log da spostare (formato: AAAAMMDD)
set /a Range=%LastDate%-%StartDate%
PAUSE
FOR %%A IN (1, 1, %Range%) DO (
set /a j=%StartDate% + 1
copy /-y "C:\%j%*.txt" "D:\directory"
)
这一行问我开始日期:
set /p StartDate= Inserire la data di INIZIO dei log da spostare (formato: AAAAMMDD)
这一行问我结束日期(正如你在两行中看到的那样,我写了所要求的格式):
set /p StartDate= Inserire la data di INIZIO dei log da spostare (formato: AAAAMMDD)
然后我设置一个范围,以便对FOR CYCLE有用的天数:
set /a Range=%LastDate%-%StartDate%
现在我需要在Range变量的引用中重复FOR CYCLE。 然后我设置一个新的变量“j”,它将等于(StartDate + 1)第一个循环,(StardDate + 2)第二个循环......依此类推......
如果我的输入(前两行代码)是: 20140619 20140625
确实: 20140625-20140619 = 6 - >范围变量
for循环从0开始并继续到6。
设置变量20140619 + 0并将文件20140619 * .txt复制到目录
FOR CYCLE结束并继续加1,直到复制的最后一个文件是20140625,因为20140619 + 6 = j是20140625
我希望我的目标很明确。
先谢谢你的帮助!!
答案 0 :(得分:1)
@echo off
set /p StartDate= Inserire la data di INIZIO dei log da spostare (formato: AAAAMMDD)
set /p LastDate= Inserire la data di FINE dei log da spostare (formato: AAAAMMDD)
set "source_dir=c:\date_files\"
set "destination_dir=d:\directory"
setlocal enableDelayedExpansion
FOR %%A IN (c:\date_files\*_LogStat.txt) DO (
set "filename=%%~nA"
set "file_date=!filename:~0,8!"
if !file_date! GTR !StartDate! if !file_date! LSS !LastDate! (
copy /-y "%%~fA" "%destination_dir%"
)
)
endlocal
答案 1 :(得分:1)
使用您指定的文件格式,这应该有效:
@echo off
set /p StartDate= Inserire la data di INIZIO dei log da spostare (formato: AAAAMMDD)
set /p LastDate= Inserire la data di FINE dei log da spostare (formato: AAAAMMDD)
FOR /L %%A IN (%startdate%, 1, %lastdate%) DO (
if exist "C:\%%A_logstat.txt" copy /-y "C:\%%A_logstat.txt" "D:\directory"
)
pause