Batch file 创建.bat文件以从网络驱动器复制最新文件并更改其名称和扩展名
我在Batch file 创建.bat文件以从网络驱动器复制最新文件并更改其名称和扩展名,batch-file,Batch File,我在.bat中有以下内容。我试图从网络驱动器中提取最新的文件(因为每次生成新文件时文件名都会更改),并将其复制到桌面上的文件夹中,更改名称以便从外部数据库中点击它。不幸的是,我对.bat文件比较陌生,无法确定如何提取最新的文件,而不是下面定义的文件。我将把它转到一个任务调度程序中,每30分钟提取一次文件 copy \\fipr01\SNAP\P161201135302673.tmp C:\Users\ddtacopy\Desktop\AutoCopy\SNAP.txt 您可以使用dir获取按年
.bat
中有以下内容。我试图从网络驱动器中提取最新的文件(因为每次生成新文件时文件名都会更改),并将其复制到桌面上的文件夹中,更改名称以便从外部数据库中点击它。不幸的是,我对.bat
文件比较陌生,无法确定如何提取最新的文件,而不是下面定义的文件。我将把它转到一个任务调度程序中,每30分钟提取一次文件
copy \\fipr01\SNAP\P161201135302673.tmp C:\Users\ddtacopy\Desktop\AutoCopy\SNAP.txt
您可以使用
dir
获取按年龄排序的文件列表,获取最新文件,然后复制它:
pushd "\\fipr01\SNAP"
for /F "delims=" %%F in ('
dir /B /O:D /T:C "*.tmp"
') do (
set "NEWEST=%%F"
)
copy /Y "%NEWEST%" "C:\Users\ddtacopy\Desktop\AutoCopy\SNAP.txt"
popd
它是如何工作的
创建一个指向给定网络路径的临时驱动器号,并对其进行更改;这是因为许多批处理命令不支持网络路径李>pushd
返回当前目录中的文件列表dir/B/O:B/T:C
,最新项目位于最后*.tmp
告诉/T:C
按创建日期排序;如果要使用修改日期,请省略该选项李>dir
循环for/F
读取其输出并枚举所有项;对于每次迭代,它都将当前迭代的项分配给变量dir
set;变量值每次都会被覆盖,因此由于最新的项列为last,NEWSET
最终包含该项李>latest
- 此时,将复制检索到的项目;
告诉/Y
命令覆盖已经存在的目标文件,而无需询问;如果要显示提示,请将其更改为copy
李>/-Y
清除由popd
创建的临时驱动器号,并返回到以前的目录李>pushd