Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 创建.bat文件以从网络驱动器复制最新文件并更改其名称和扩展名_Batch File - Fatal编程技术网

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
    读取其输出并枚举所有项;对于每次迭代,它都将当前迭代的项分配给变量
    NEWSET
    set;变量值每次都会被覆盖,因此由于最新的项列为last,
    latest
    最终包含该项
  • 此时,将复制检索到的项目;
    /Y
    告诉
    copy
    命令覆盖已经存在的目标文件,而无需询问;如果要显示提示,请将其更改为
    /-Y
  • popd
    清除由
    pushd
    创建的临时驱动器号,并返回到以前的目录