Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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 动态创建不可见的.vbs时出错?_Batch File_Vbscript - Fatal编程技术网

Batch file 动态创建不可见的.vbs时出错?

Batch file 动态创建不可见的.vbs时出错?,batch-file,vbscript,Batch File,Vbscript,当我使用批处理文件创建文件invisible.vbs,然后删除时,它会因错误而停止。基本上,我想做的是让批处理文件生成这个文件 这是我在运行批处理文件时遇到的错误: C:\Users\HP\Desktop>"New Text Document.bat" CreateObject("Wscript.Shell").Run """" 'WScript.Arguments' is not recognized as an internal or external command, operab

当我使用批处理文件创建文件
invisible.vbs
,然后删除时,它会因错误而停止。基本上,我想做的是让批处理文件生成这个文件

这是我在运行批处理文件时遇到的错误:

C:\Users\HP\Desktop>"New Text Document.bat"
 CreateObject("Wscript.Shell").Run """"
'WScript.Arguments' is not recognized as an internal or external command, operable program or batch file.
'""""' is not recognized as an internal or external command, operable program or batch file.
这是批处理文件中的内容:

@ECHO OFF  
CD /D %~dp0  
ECHO\ CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0,False>>Invisible.vbs  
::What I want to do with the file is here  
DEL %CD%\invisible.vbs /Q /S

我注意到该文件已生成,但它是空的,因此当我尝试使用它使另一个批处理文件不可见时,它不会执行任何操作。

这是由echo语句中的
&
符号造成的。当按字面意思使用批转义字符
^
时,它需要通过批转义字符
^&
转义。您可能还希望使用单输出重定向操作符
(覆盖现有)而不是双输出重定向操作符
>
(附加到现有)


另一个技巧是在创建一次性文件时使用
%TEMP%
目录变量。

好的,这是可行的,但现在它说:
。此时运行是意外的
。现在怎么办?@JeffreyLin当你看到一条消息,上面说“废话”在此时出乎意料时,只要看看“废话”前面的人物,你就会找到原因。在批处理中,括号
()
是特殊字符,当按字面意思使用且不包含在引号中时,它们本身应该被转义。对不起,我错过了。更新了答案。谢天谢地,将echo输出重定向到文件时,这种类型的错误不会导致执行问题。这很烦人。@JeffreyLin在批处理中,括号
()
是(指定范围)的特殊字符。注意批处理和按字面意思使用特殊字符有很多烦人之处。批处理特殊字符包括
%&()^~
,请注意,某些特殊字符在跟随另一个特殊字符时会执行不同的操作。
@ECHO OFF
CD /D %~dp0
ECHO.CreateObject^("Wscript.Shell"^).Run """" ^& WScript.Arguments^(0^) ^& """", 0,False>Invisible.vbs
::What I want to do with the file is here  
DEL %CD%\invisible.vbs /Q /S