在批处理文件中使用 Echo 将 IF 语句写入文本文件
Using Echo within a Batch File to write an IF Statement to a Text File
我正在构建一个文本文件,它实际上是 Excel 的 VBA 模块,但使用批处理文件编写。我想根据用户在选择菜单上的选择动态创建它。该模块将创建一个循环以在文件夹中的所有文件中应用宏,但 MACRO 可以根据用户输入进行更改。
我遇到的问题是我无法将以下行复制到文本文件中:
Echo If Right(folderPath, 1) <> "\" Then folderPath = folderPath + "\">>c:\users\%username%\desktop\TESTVBA.vbs
这一行上面的所有其他行都写入文件,但是这一行和下面的所有内容都不会跟过来,但我相信这与语法有关。我如何阻止它复制过来?还是不能复制过来?
每个单独的重定向器字符(>
、<
、|
)都需要使用脱字符号(^
)进行转义,因此:
... th, 1) ^<^> "\"...
其他可能会出现问题的字符也是如此,例如 &
、^
和 )
()
仅在 code-block
中(括号内的序列指令)在generating代码中)
%
也需要转义——但是 %
的转义字符是另一个 %
,所以 %username%
需要编码为 %%username%%
- 除非您想在此处的 generating 代码中替换 username
的当前值。
您要 echo
的所有内容都应该进行转义。不幸的是,没有一种方法可以解决。每个 %
百分号都应该被配音,列表 <>&|
中的所有特殊符号都应该用 ^
插入符号转义。以下代码将为您工作。请注意 <>
不等式运算符如何变异为 ^<^>
Echo If Right(folderPath, 1) ^<^> "\" Then folderPath = folderPath + "\"
更新
我刚刚又想起一件事。括号 (
和 )
可能会带来更多麻烦,如果它们要在代码块(括号内可执行的东西)中被 echo
ed。
为了消除这些问题,我建议将可打印的大量文本存储为评论并使用 for /f
阅读它们。
我正在构建一个文本文件,它实际上是 Excel 的 VBA 模块,但使用批处理文件编写。我想根据用户在选择菜单上的选择动态创建它。该模块将创建一个循环以在文件夹中的所有文件中应用宏,但 MACRO 可以根据用户输入进行更改。
我遇到的问题是我无法将以下行复制到文本文件中:
Echo If Right(folderPath, 1) <> "\" Then folderPath = folderPath + "\">>c:\users\%username%\desktop\TESTVBA.vbs
这一行上面的所有其他行都写入文件,但是这一行和下面的所有内容都不会跟过来,但我相信这与语法有关。我如何阻止它复制过来?还是不能复制过来?
每个单独的重定向器字符(>
、<
、|
)都需要使用脱字符号(^
)进行转义,因此:
... th, 1) ^<^> "\"...
其他可能会出现问题的字符也是如此,例如 &
、^
和 )
()
仅在 code-block
中(括号内的序列指令)在generating代码中)
%
也需要转义——但是 %
的转义字符是另一个 %
,所以 %username%
需要编码为 %%username%%
- 除非您想在此处的 generating 代码中替换 username
的当前值。
您要 echo
的所有内容都应该进行转义。不幸的是,没有一种方法可以解决。每个 %
百分号都应该被配音,列表 <>&|
中的所有特殊符号都应该用 ^
插入符号转义。以下代码将为您工作。请注意 <>
不等式运算符如何变异为 ^<^>
Echo If Right(folderPath, 1) ^<^> "\" Then folderPath = folderPath + "\"
更新
我刚刚又想起一件事。括号 (
和 )
可能会带来更多麻烦,如果它们要在代码块(括号内可执行的东西)中被 echo
ed。
为了消除这些问题,我建议将可打印的大量文本存储为评论并使用 for /f
阅读它们。