将 2 个最新文件复制到另一个文件夹中的批处理文件
Batch file to copy 2 most recent files into another folder
我一直在网上寻找,但似乎找不到我要找的东西。在开始之前,我绝不是经验丰富的命令行用户,所以请保持温和。
我需要一个批处理文件,它将两个最新的文件从一个目录复制到另一个目录,然后我需要删除目标文件夹中的文件,只留下这两个最新的可见文件。
值得注意的是,我尝试了 /d 命令(不包括日期)但是,这开始复制所有文件而不是最新的文件。
请帮忙?
谢谢
未测试:
setlocal enableDelayedExpansion
set "source=c:\source"
set "target=c"\target"
set "counter=0"
for /f "tokens=* delims=" %%# in ('dir "%source%" /b /o:-d /t:c /a:-d') do (
set /a counter=counter+1
echo "%%#"
copy "%source%\%%#" "%target%" /Y
if !counter! equ 2 goto :break
)
:break
你的描述有点颠倒了。
首先将文件复制到目的地,然后删除除两个新文件之外的所有文件,这有点笨拙。
- 您可以评估这两个文件并记住名称(在数组中)
- 删除目标
中的所有个文件
- 最后复制记忆的文件
无礼窃取npocmaka的代码作为基础:
@Echo off
setlocal enableDelayedExpansion
set "source=c:\source_folder"
set "target=c:\target"
PushD "%source%"
set "counter=0"
for /f "tokens=* delims=" %%A in ('dir "*.bak" /b /o:-d /t:w') do (
set /a counter+=1
Set Copy[!counter!]=copy "%%~fA" "%target%\"
if !counter! equ 2 goto :break
)
:break
Del /Q "%target%\*"
For /L %%C in (1,1,%counter%) Do !Copy[%%C]!
PopD
以下脚本用于复制文件夹中现有的最新 4 个文件:
@ECHO OFF
:: Variables are A, B, C, D
DIR "C:\Users\singh\Desktop\Writing Tool\sourcefolder\*.fileextension" /A:-D /O:-D /B /S > filelist.tmp
3<filelist.tmp (
for %%a in (A B C D) do (
set /p %%a=<&3
)
)
del filelist.tmp
:: Newest File
copy "%A%" "C:\Users\singh\Desktop\Writing Tool\destinationfolder"
:: Second Newest File
copy "%B%" "C:\Users\singh\Desktop\Writing Tool\destinationfolder"
:: Thirst Newest File
copy "%C%" "C:\Users\singh\Desktop\Writing Tool\destinationfolder"
:: Fourth Newest File
copy "%D%" "C:\Users\singh\Desktop\Writing Tool\destinationfolder"
TIMEOUT 4
我一直在网上寻找,但似乎找不到我要找的东西。在开始之前,我绝不是经验丰富的命令行用户,所以请保持温和。
我需要一个批处理文件,它将两个最新的文件从一个目录复制到另一个目录,然后我需要删除目标文件夹中的文件,只留下这两个最新的可见文件。
值得注意的是,我尝试了 /d 命令(不包括日期)但是,这开始复制所有文件而不是最新的文件。
请帮忙?
谢谢
未测试:
setlocal enableDelayedExpansion
set "source=c:\source"
set "target=c"\target"
set "counter=0"
for /f "tokens=* delims=" %%# in ('dir "%source%" /b /o:-d /t:c /a:-d') do (
set /a counter=counter+1
echo "%%#"
copy "%source%\%%#" "%target%" /Y
if !counter! equ 2 goto :break
)
:break
你的描述有点颠倒了。
首先将文件复制到目的地,然后删除除两个新文件之外的所有文件,这有点笨拙。
- 您可以评估这两个文件并记住名称(在数组中)
- 删除目标 中的所有个文件
- 最后复制记忆的文件
无礼窃取npocmaka的代码作为基础:
@Echo off
setlocal enableDelayedExpansion
set "source=c:\source_folder"
set "target=c:\target"
PushD "%source%"
set "counter=0"
for /f "tokens=* delims=" %%A in ('dir "*.bak" /b /o:-d /t:w') do (
set /a counter+=1
Set Copy[!counter!]=copy "%%~fA" "%target%\"
if !counter! equ 2 goto :break
)
:break
Del /Q "%target%\*"
For /L %%C in (1,1,%counter%) Do !Copy[%%C]!
PopD
以下脚本用于复制文件夹中现有的最新 4 个文件:
@ECHO OFF
:: Variables are A, B, C, D
DIR "C:\Users\singh\Desktop\Writing Tool\sourcefolder\*.fileextension" /A:-D /O:-D /B /S > filelist.tmp
3<filelist.tmp (
for %%a in (A B C D) do (
set /p %%a=<&3
)
)
del filelist.tmp
:: Newest File
copy "%A%" "C:\Users\singh\Desktop\Writing Tool\destinationfolder"
:: Second Newest File
copy "%B%" "C:\Users\singh\Desktop\Writing Tool\destinationfolder"
:: Thirst Newest File
copy "%C%" "C:\Users\singh\Desktop\Writing Tool\destinationfolder"
:: Fourth Newest File
copy "%D%" "C:\Users\singh\Desktop\Writing Tool\destinationfolder"
TIMEOUT 4