为什么同一批处理文件无法在多台计算机上运行?

时间:2017-09-08 05:28:26

标签: batch-file

我在家里制作了这个批处理文件:

@echo off
set src_folder=E:\1
set dst_folder=E:\3
set file_list=E:\File-list.txt

   if not exist "%dst_folder%" mkdir "%dst_folder%"

for /f "delims=" %%f in (%file_list%) do (
echo "No" | xcopy "%src_folder%\%%f" "%dst_folder%\"
)

但是当我试图在我的计算机上使用它时,它表示无法找到文件。 捕获的是什么? 首先,我尝试将它用于映射驱动器上的共享文件,因此我就是这样。但是我已经在工作中的多个工作站/计算机上尝试了它,并且其中一些工作站工作了。有人可以解释一下吗?

注意:

  • 我每次都必须更改文件夹位置,因为它在所有计算机上都不一样。
  • 我还使用%~dp0作为文件列表。

1 个答案:

答案 0 :(得分:0)

根据您的File-list.txt仅包含filename.ext 类型的单个文件名(不允许使用路径,但允许使用空格)

@Echo Off
REM Place your source destination and file list paths below
REM Remember not to remove the closing double quotation mark
Set "srcDir=E:\1"
Set "dstDir=E:\3"
Set "lstTxt=E:\File-list.txt"

REM Exit the script if no source or destination 
REM or if unable to change directory to that destination
If Not Exist "%srcDir%\" Exit/B
If Not Exist "%dstDir%\" MD "%dstDir%">Nul||Exit/B
CD /D "%dstDir%" 2>Nul||Exit/B

REM Copies any files within the file list existing in source
REM to the current directory which is the intended destination
For /F "UseBackQ Delims=" %%A In ("%lstTxt%"
) Do If Exist "%srcDir%\%%~A" Copy /Y "%srcDir%\%%~A">Nul

您的File-list.txt可能如下所示:

file name.ext
another.txt

或者像这样:

"file name.txt"
another.ext