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 批处理脚本-重命名复制的文件_Batch File_Cmd - Fatal编程技术网

Batch file 批处理脚本-重命名复制的文件

Batch file 批处理脚本-重命名复制的文件,batch-file,cmd,Batch File,Cmd,下面的批处理脚本非常适合复制目录中最近的文件,但如何相应地重命名复制的文件 pushd D:\sales\ for /f "tokens=*" %%a in ('dir /b ') do set newest=%%a copy "%newest%" D:\test\ popd destination参数可以是放置新文件的目录,但也可以向其中添加新文件名。因此,您可以执行类似于D:\test\filename.ext的操作,而不是D:\test\,此改进的代码段将您的文件重命名为new\u n

下面的批处理脚本非常适合复制目录中最近的文件,但如何相应地重命名复制的文件

pushd D:\sales\
for /f "tokens=*" %%a in ('dir /b ') do set newest=%%a
copy "%newest%" D:\test\ 
popd

destination参数可以是放置新文件的目录,但也可以向其中添加新文件名。因此,您可以执行类似于
D:\test\filename.ext
的操作,而不是
D:\test\
,此改进的代码段将您的文件重命名为
new\u name.ext

pushd D:\sales\
for /f "tokens=*" %%a in ('dir /b /o:-d /a:-d') do (
    set "newest=%%~a"
    goto :SKIP
)
:SKIP
copy "%newest%" "D:\test\new_name.ext"
popd
改进:

  • 当然,添加新的文件名
  • dir
    定义排序顺序,首先获取最新文件,并筛选出目录,仅获取文件;
    for
    goto
    内部打破了循环,因此只有一次迭代;这可能会在文件数量巨大的情况下提高性能
  • 在变量
    %%a的
    中插入修饰符
    ~
    ,以避免任何周围的引号;这些将在后面的
    copy
    命令行中的目的地进行说明
要真正将最新文件放入变量
latest
,需要将排序选项
/o:d
添加到
dir
命令中(除非此部分包含在变量
DIRCMD
中);要重命名,请将新文件名附加到
copy`命令行中的
D:\test`中……您所说的“相应重命名”到底是什么意思?是否有一个固定的名称,还是需要以编程方式构建?