我正在尝试执行命令xcopy path1 path2 / Y / C,当我从命令行尝试并且当我将其复制到批处理文件并双击该批处理文件时,它正在成功执行。
但是当我从另一个文件中调用这个批处理文件时,它没有被执行。
有人可以帮忙吗?
不工作案例
C:\abcd>cmd.exe /C "xcopy "C:\folder1\itsme.bat" "Y:\" /C /Y /Z"
0 File(s) copied
工作案例:
C:\abcd>cmd.exe /C "xcopy "C:\folder1\itsme.bat" "Y:\" /C /Y /Z"
C:\abcd\itsme.bat
1 File(s) copied
额外信息:
Runme.bat:
call C:\folder1\copy.bat
call C:\folder1\clean.bat
copy.bat:
@echo off
xcopy "C:\folder1\runrun.bat" "Z:\" /C /Y /Z /Q
xcopy "C:\folder1\runrun.bat" "Y:\" /C /Y /Z /Q
xcopy "C:\folder1\runrun.bat" "X:\" /C /Y /Z /Q
在这里,如果我双击Runme.bat,copy.bat正在执行并复制所有文件。 1个文件被复制 1个文件被复制 1个文件被复制
但问题是,当我尝试从Windows调度程序运行相同的批处理文件时,它不会复制任何内容。 输出: 0文件被复制 0文件被复制 0文件已复制
看起来问题只在第二个批处理文件中使用copy命令,它将返回输出。但是其他批处理文件clean.bat中的所有命令(我从第一个批处理文件调用)都没有任何问题。 第二个批处理文件有简单的echo命令,这就是它工作正常的原因。
答案 0 :(得分:3)
将xcopy与'START'命令一起使用。 例如,c:>> START xcopy“C:\ folder1 \ itsme.bat”Y:\ / C / Y / Z
正如Mofi所指出的,你可以删除'CMD'
答案 1 :(得分:1)
命令 cmd 用于运行命令行解释器的新实例,通常只用于打开命令提示符窗口。在命令提示符窗口cmd /?
中执行以获取有关此命令的帮助。
如果已经打开命令提示符窗口并输入命令,则通常不需要使用命令 cmd 。批处理文件由 cmd 解释/处理,因此在批处理文件中使用 cmd 通常没有意义。
因此,在已打开的命令提示符窗口和批处理文件中仅使用xcopy "C:\folder1\itsme.bat" "Y:\" /C /Y /Z
。
要处理batch file 2
等批处理文件中的batch file 1
等其他批处理文件,并在处理完batch file 1
后继续处理batch file 2
,请在{{1}中使用对于调用 batch file 1
的命令调用,就像子程序一样。
batch file 2
的示例:
batch file 1
@echo off
echo This is batch 1 calling now batch 2 and is waiting until it finished.
call "batch file 2.bat"
echo Batch 1 continues.
的示例:
batch file 2
运行echo This is batch 2 running XCOPY.
xcopy "C:\folder1\itsme.bat" "Y:\" /C /Y /Z
echo XCOPY finished, batch 2 terminates.
并获得输出:
batch file 1
删除This is batch 1 calling now batch 2 and is waiting until it finished.
This is batch 2 running XCOPY.
XCOPY finished, batch 2 terminates.
Batch 1 continues.
中的调用命令,再次执行并查看您现在获得的内容。
这一次batch file 1
batch file 1
处理 <{1}} batch file 1
继续 batch file 2
而{}返回batch file 1
}到达batch file 2
处理结束时。
答案 2 :(得分:0)
根据您的额外信息,x:
y:
z:
可能是网络驱动器,而任务计划程序在系统帐户下没有网络权限。
另外,更改copy.bat
的名称,因为复制是一个系统命令,如果不是今天,使用系统命令名称会有一天咬你。