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_File Io - Fatal编程技术网

Batch file 批处理文件复制问题

Batch file 批处理文件复制问题,batch-file,file-io,Batch File,File Io,我在创建复制文件的批处理文件时遇到问题。有时它说目录存在,有时它说它不能执行循环复制 @ECHO off ECHO Please use quotes with directories ECHO. IF NOT EXIST Pictures (MD Pictures) > NUL :start SET /P From=Copy from: IF NOT EXIST %From% (ECHO No such directory

我在创建复制文件的批处理文件时遇到问题。有时它说目录存在,有时它说它不能执行循环复制

@ECHO off

ECHO Please use quotes with directories

ECHO.



IF NOT EXIST Pictures (MD Pictures) > NUL



:start

SET /P From=Copy from:

IF NOT EXIST %From% (ECHO No such directory

                     ECHO.

                     goto start)

XCOPY /s %From% Pictures

pause

如果您试图创建一个已经存在的目录,
md
会告诉您。您可以使用

md pictures 2>nul

参数
/s
xcopy
告诉计算机复制子目录及其内容。所以你会复制一份副本一份副本一份副本。。。。(称为循环拷贝)。要避免这种情况,请不要使用
/s
,或者确保目标目录在您要复制的目录树之外。

这是另一种方法:xcopy自行创建文件夹,并且目标路径末尾的斜杠阻止它提示您

if exist“folder\”处的斜杠用于检测本地驱动器上的文件夹,而不是文件

Stephan的回答告诉您如何避免循环复制错误

@ECHO off
ECHO Please use quotes with directories
ECHO.
:start
SET /P From=Copy from:

IF exist "%From%\" (
      XCOPY /s %From% "Pictures\" 
) else (
      ECHO No such directory
      ECHO.
      goto start
)
pause

如何检查目标目录是否在目标目录之外?之前不要检查
xcopy
将给出
4
的错误级别。在
xcopy
行之后执行:
if%errorlevel%==4 echo error&goto start