我需要将最新的文件复制到一个新的位置。到目前为止,我在forfiles命令中找到了资源,date-related question这里以及另一个related question。我只是有点麻烦拼凑在一起!如何将该目录中的最新文件复制到新地点?如何编写Windows批处理脚本以从目录中复制最新的文件?
回答
Windows外壳,一个衬里:
FOR /F %%I IN ('DIR *.* /B /O:-D') DO COPY %%I <<NewDir>> & EXIT
我知道你要的Windows,但认为我会反正添加此,在Unix/Linux操作系统,你可以这样做:
cp `ls -t1 | head -1` /somedir/
其中将列出通过修改时间,然后CP排序的当前目录下的所有文件最近的/ somedir/
我没想到在这篇文章中有这个答案。非常感谢你。 – Mrk 2015-05-22 04:40:47
这将打开第二个cmd.exe窗口。如果您希望它消失,请用/ C替换/ K。
显然,将new_file_loc替换为您的新文件位置。
@echo off
for /F %%i in ('dir /B /O:-D *.txt') do (
call :open "%%i"
exit /B 0
)
:open
start "window title" "cmd /K copy %~1 new_file_loc"
exit /B 0
击:
find -type f -printf "%[email protected] %p \n" \
| sort \
| tail -n 1 \
| sed -r "s/^\S+\s//;s/\s*$//" \
| xargs -iSTR cp STR newestfile
其中 “newestfile” 将成为newestfile
或者,你可以做NEWDIR/STR或只是NEWDIR
击穿:
- 列出{time} {file}中的所有文件格式。
- 通过时间
- 排序他们从一开始/结束得到最后一个
- 切断时间,和空白
- 拷贝产生的价值
重要
运行后这一次,最新的文件将是你刚刚复制的任何内容:p(假设它们都处于相同的搜索范围)。 所以你可能需要调整你复制的文件编号,如果你想让它工作多次。
接受的答案给出了使用在一个命令的最新的文件,然后退出的一个例子。如果你需要做到这一点与其他复杂的操作一个bat文件,你可以使用以下方法来存储在一个变量的最新文件的文件名:
FOR /F "delims=|" %%I IN ('DIR "*.*" /B /O:D') DO SET NewestFile=%%I
现在你可以在整个其余参考%NewestFile%你的bat文件。
例如,这里是我们用来获取数据库的最新版本。从目录BAK文件,将它复制到服务器,然后还原数据库:
:Variables
SET DatabaseBackupPath=\\virtualserver1\Database Backups
echo.
echo Restore WebServer Database
FOR /F "delims=|" %%I IN ('DIR "%DatabaseBackupPath%\WebServer\*.bak" /B /O:D') DO SET NewestFile=%%I
copy "%DatabaseBackupPath%\WebServer\%NewestFile%" "D:\"
sqlcmd -U <username> -P <password> -d master -Q^
"RESTORE DATABASE [ExampleDatabaseName]^
FROM DISK = N'D:\%NewestFile%'^
WITH FILE = 1,^
MOVE N'Example_CS' TO N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Example.mdf',^
MOVE N'Example_CS_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Example_1.LDF',^
NOUNLOAD, STATS = 10"
允许这种使用空格的文件名的工作,是需要接受的答案的修改版本:
FOR /F "delims=" %%I IN ('DIR . /B /O:-D') DO COPY "%%I" <<NewDir>> & GOTO :END
:END
@克里斯野老
注意,在&前面的空间成为前一命令的一部分。 SET让我感到困惑,它愉快地将尾随空格放入值中。
要绕过要添加到环境变量的尾随空间,请将parens中的set命令封装起来。
E.g. FOR /F %%I IN ('DIR "*.*" /B /O:D') DO (SET NewestFile=%%I)
@echo off
set source="C:\test case"
set target="C:\Users\Alexander\Desktop\random folder"
FOR /F "delims=" %%I IN ('DIR %source%\*.* /A:-D /O:-D /B') DO COPY %source%\"%%I" %target% & echo %%I & GOTO :END
:END
TIMEOUT 4
我试图从一个文件夹复制最新的文件
只需设置你的源和目标文件夹,它应该工作
这一个忽略的文件夹,关注本身只用文件
建议您在DIR路径中选择文件类型*.*
至*.zip
例如
TIMEOUT不会在winXP上工作我认为
- 1. 如何编写将一个目录复制到另一个目录的批处理脚本,替换旧文件?
- 2. 如何使Windows批处理文件复制目录?
- 3. 复制最新的2个文件使用Windows批处理脚本
- 4. 批处理脚本复制文件名?
- 5. 批处理脚本复制文件
- 6. 在windows批处理文件中通过http复制目录
- 7. 如何测试文件是批处理脚本中的目录?
- 8. 如何编写批量文件以从源复制到目标
- 9. 如何从Windows批处理文件编辑文本文件?
- 10. 在Windows中从批处理文件制作多个目录
- 11. Windows批处理文件 - 如何遍历目录中的文件?
- 12. 批处理脚本复制小写文件
- 13. 如何从批处理脚本中运行批处理脚本?
- 14. 如何在Windows中使用批处理脚本获取最新文件
- 15. 如何检查文件/目录是否在批处理脚本
- 16. 如何创建在目录中的每个文件夹中创建文本文件的脚本? (Windows批处理)
- 17. 如何从批处理脚本中的文件路径获取目录路径
- 18. 从Windows批处理脚本中的文件中读取值
- 19. 使用批处理文件在目录中复制新建的文件夹
- 20. 写Windows批处理脚本复制文件夹,附加日期作为新的文件名
- 21. 如何检查Windows批处理脚本中文件的大小?
- 22. 如何让批处理文件代码只复制目录中最新的.bak文件
- 23. 批处理脚本来复制以.1.tst结尾的脚本文件
- 24. 如何在Windows批处理文件中编写pidfile
- 25. 我如何编写脚本来查找最新更新的文件并复制到特定目录
- 26. 批处理脚本来复制列表中的所有文件
- 27. 批处理脚本编辑文件名
- 28. 使用批处理文件将文件复制到photoshop目录
- 29. 如何在shell脚本中运行windows批处理文件?
- 30. 批处理脚本复制X从文本文件中没有行后间隔
这可能应该是退出/ b或转到:eof以避免关闭cmd窗口... – Joey 2009-06-10 23:04:01
默认分隔符是和因此,最好在FOR/F之后添加“delims =”以接受带空格的文件名。整个命令将为FOR/F“delims =”%% I IN('DIR *。*/B/O:-D')DO COPY %% I <>&EXIT –
Cheburek
2010-10-13 22:16:38
请注意,&前面的空格前一个命令的一部分。这让我对SET感到困惑,它乐于将尾随空白放入价值中。 – 2011-03-05 19:15:40