Scripting 批处理文件复制脚本在for循环中出现错误 我正在编写一个批处理脚本,它将从一个位置复制一组微小文件到另一个位置,验证文件是否存在于新目录中,删除原始文件,然后继续前进。我已经实现了一个FOR循环来实现这一点,但我似乎无法让它工作。有什么想法吗 ::Copying files- ::For loop copies file, verifies file was copied, ::and removes file from source. for %%f in (Q:%source%\*) do ( :recopy copy %%f %dest%\%%f if not exist %dest%\%%f goto recopy set /a count+=1 del %source%\%%f echo copied !count! of %total% ping -n 1 -w 500 1.1.1.1 >nul )

Scripting 批处理文件复制脚本在for循环中出现错误 我正在编写一个批处理脚本,它将从一个位置复制一组微小文件到另一个位置,验证文件是否存在于新目录中,删除原始文件,然后继续前进。我已经实现了一个FOR循环来实现这一点,但我似乎无法让它工作。有什么想法吗 ::Copying files- ::For loop copies file, verifies file was copied, ::and removes file from source. for %%f in (Q:%source%\*) do ( :recopy copy %%f %dest%\%%f if not exist %dest%\%%f goto recopy set /a count+=1 del %source%\%%f echo copied !count! of %total% ping -n 1 -w 500 1.1.1.1 >nul ),scripting,batch-file,Scripting,Batch File,变量的输入如下所示: set /P source=Enter path to files on P:(Temp) drive (EX: jdoe\copy) set dest=D:Temp\Copy net use Q: \\SERVER\Temp 如果网络共享如下所示,则按脚本添加: set /P source=Enter path to files on P:(Temp) drive (EX: jdoe\copy) set dest=D:Temp\Copy net use Q: \

变量的输入如下所示:

set /P source=Enter path to files on P:(Temp) drive (EX: jdoe\copy)

set dest=D:Temp\Copy
net use Q: \\SERVER\Temp
如果网络共享如下所示,则按脚本添加:

set /P source=Enter path to files on P:(Temp) drive (EX: jdoe\copy)

set dest=D:Temp\Copy
net use Q: \\SERVER\Temp
给出的错误是:

系统找不到指定的文件

并重复该错误,直到屏幕填满为止


位于

的完整粘贴箱如果内存可用,则for循环或if语句中不能有标签。您应该将
:recopy
移动到循环之外。大概是这样的:

::Copying files-
::For loop copies file, verifies file was copied,
::and removes file from source.
for %%I in (Q:\%source%\*) do (
    call :recopy "%%~fI" "%dest%\%%~nxI"
    set /a count+=1
    del "%%~fI"
    echo copied !count! of %total%
    ping -n 1 -w 500 1.1.1.1 >nul
)
goto :EOF

:recopy source dest
copy "%~1" "%~2"
if not exist "%~2" call :recopy "%~1" "%~2"
goto :EOF

这不是巴什。请编辑标题。该死,我整天都在打字。我两者都做。:/谢谢。请尝试在脚本顶部标记出
@echo off
,您可以看到脚本的哪个部分导致“系统找不到指定的文件”。我不知道为什么我以前没有想到这一点。。。现在我知道怎么了。正在%%f上复制路径