Batch file 合并批处理文件后,“复制”命令已停止工作
我继承了一组批处理文件。 Bat1称为bat2,bat2称为bat3。 Bat3创建了一个xml,bat2用它创建html,bat1用它创建pdf。 最后,bat1将pdf复制到输出目录 我最近将三个批处理文件合并为一个批处理文件,直到最后一个copy命令,所有的工作方式都完全相同,该命令无法说明无法找到pdfBatch file 合并批处理文件后,“复制”命令已停止工作,batch-file,Batch File,我继承了一组批处理文件。 Bat1称为bat2,bat2称为bat3。 Bat3创建了一个xml,bat2用它创建html,bat1用它创建pdf。 最后,bat1将pdf复制到输出目录 我最近将三个批处理文件合并为一个批处理文件,直到最后一个copy命令,所有的工作方式都完全相同,该命令无法说明无法找到pdf @echo off pushd %~dp0 set sourceFile=%1 set xslt=%2 set outputFile=%3 for %%i in (%sourceF
@echo off
pushd %~dp0
set sourceFile=%1
set xslt=%2
set outputFile=%3
for %%i in (%sourceFile%) do (
set documentName=%%~ni
)
::BATCH FILE 2 CALLED
::BATCH FILE 3 CALLED
echo Processing source file compose
java -cp lib\saxon9.jar; net.sf.saxon.Transform -s:%sourceFile% -xsl:conversion\compose.xsl -o:compose.xml
echo Processing source file catalog
java -cp lib\saxon9.jar; -s:compose.xml -xsl:conversion\catalog.xsl -o:catalog.xml
::END OF BATCH FILE 3
echo Processing source file to HTML
java -cp lib\saxon9.jar; net.sf.saxon.Transform -s:catalog.xml -xsl:conversion\html5.xsl -o:index.html
echo Bundling publication
mkdir %documentName%
xcopy /y "conversion\webapp\*" %documentName%\ /o /x /e /h /k
move index.html %documentName%\
copy source graphics into web application img res dir
for %%f in ("*.jpg" "*.png" "*.gif" "*.svg" "*.psd" "*.ai" "*.pdf") do copy "%%f" %documentName%\asset\img\
::END OF BATCH FILE 2
echo Running AHF
AHFCmd -extlevel 4 -d %documentName%\index.html -o %documentName%.pdf -f HTML -x 4 -i tool\AHF\AHFSettings(x64).xml -stdout
::EVERYTHING WORKS FINE TO HERE; %documentName%.pdf is created just as it was previously.
echo Moving %documentName%.pdf
copy %documentName%.pdf %outputFile% ::Error - The system cannot find the file specified.
popd
行
copy%documentName%.pdf%outputFile%
没有更改。我曾尝试在AHFCmd和JAVA命令前面使用CALL,但这并没有什么区别。就在copy命令之前,我尝试了dir/b/a-d
,它列出了我要在当前目录中移动的文件。我做错了什么?在copy命令之前运行echo%documentName%.pdf%outputFile%
,以确保不仅设置了%outputFile%
,而且%documentName%
和%outputFile%
都不包含空格。如果他们中的任何一个这样做了,你将不得不使用双引号。@somethingsdark,这是有效的。。。我以前尝试过echo%documentName%.pdf%outputFile%
,但是%outputFile%
或%documentName%
中都没有空格,所以没有尝试双引号。但是在%outputFile%
周围加上双引号(即使文件名中没有空格)解决了这个问题。知道为什么吗?看来还有其他特殊字符,比如,
,
,=
或)
,&
,^
,…打开,运行cmd/?
,从第一页的顶部到最后一页的底部仔细阅读输出帮助。最后一页的最后一段解释了包含空格或其中一个字符的文件(或文件夹)名(或任何其他参数字符串)&()[]{}^=;!'+`~代码>(以及用于解释为参数字符串中的文字字符的重定向运算符
)必须用双引号括起来。嗯,[
和]
已经没有什么特别的意义了。@aschipfl,@Mofi,谢谢!输出文件名中有一个+
用作分隔符,这导致了问题。我没有意识到它是批处理文件中的一个特殊字符。