Windows批处理脚本查找空闲文件名

标签 windows batch-file move

我必须编写一个脚本来将文件复制到备份文件夹。如果文件名已被使用,它将附加一个索引。我似乎无法让它发挥作用。变量 tmpfile 似乎从未携带索引计数器。我究竟做错了什么?脚本如下。

谢谢, 肖恩

set srcdir=%~dp0
set oldxladir=%srcdir%OldXLAs

if not exist %oldxladir% mkdir %oldxladir%

set pathstart=C:\Documents and Settings\
set username=%USERNAME%
set pathend=\Application Data\Microsoft\Excel\XLSTART\
set pattern=groovy*.xla

set xladir=%pathstart%%username%%pathend%
set xlapattern="%pathstart%%username%%pathend%%pattern%"

for %%f in (%xlapattern%) do (
    set filename=%%~nxf
    set srcfile=%xladir%%filename%
    set destfile=%oldxladir%\%filename%
    set tmpfile=%destfile%

    set /a index=1
    :loop
    if exist tmpfile (
        set /a index+=1
        echo %index%
        set tmpfile=%destfile%%index%
        goto :loop
    )

    echo %tmpfile%
    move "%srcfile%" "%tmpfile%"
)

最佳答案

SETLOCAL ENABLEDELAYEDEXPANSION
set srcdir=%~dp0
set oldxladir=%srcdir%OldXLAs

if not exist %oldxladir% mkdir %oldxladir%

set pathstart=C:\Documents and Settings\
set username=%USERNAME%
set pathend=\Application Data\Microsoft\Excel\XLSTART\
set pattern=groovy*.xla

set xladir=%pathstart%%username%%pathend%
set xlapattern="%pathstart%%username%%pathend%%pattern%"

for %%f in (%xlapattern%) do (
    set filename=%%~nxf
    set srcfile=%xladir%!filename!
    set destfile=%oldxladir%\!filename!
    set tmpfile=!destfile!

    set /a index=1
    :loop
    if exist !tmpfile! (
        set /a index+=1
        echo !index!
        set tmpfile=!destfile!!index!
        goto :loop
    )

    echo !tmpfile!
    move "!srcfile!" "!tmpfile!"
)

关于Windows批处理脚本查找空闲文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19117202/

相关文章:

c++ - 根据 move 赋值运算符 move 构造函数

java - 授予对签名小程序的访问权限不起作用

windows - Shellexecute 是否会与启动进程共享环境变量

Windows 2003 与 Windows 2008 中的 Java Web 应用程序性能

c++ - 将 make_move_iterator 与 vector::insert 一起应用是否有意义?(C++)

c++ - 尽管传递了一个右值,为什么我的 move 构造函数没有被调用?

c++ - SetTimer(带回调函数)是否通过启动一个新线程来工作?

Hibernate Search 索引未完成的文档

batch-file - 获取window installer安装但命令行看不到的程序安装路径 "where"

powershell - AWS S3,上传后从本地目录中删除文件