我有一个制作两个文件的批处理脚本。它首先创建一个放置所有内容的目录。然后,它生成一个.vbs文件,用于无形地运行另一个批处理文件。然后,它生成.vbs将运行的批处理文件。 我遇到了这个问题。 以下是创建第二个批处理文件的代码。
Echo echo Spaghetti ^> C:\Users\*.kys > C:\ProgramData\Kys\injector.bat
这会生成一个名为injector.bat的文件 这是injector.bat
的内容echo Spaghetti > C:\Users\*.kys
应该覆盖C:\ Users目录中具有.kys扩展名的任何文件,以及其中的所有子文件夹和文件。
这是Echo echo Spaghetti the directory or name is incorrect
答案 0 :(得分:1)
您无法将(>
)数据重定向到多个文件,因此不接受*
中的通配符*.kys
。
您可以使用for
循环,如下所示:
for %%F in ("C:\Users\*.kys") do echo Spaghetti > "%%~F"
要通过主批处理文件将其写入injector.bat
,请使用以下代码:
echo for %%%%F in ^("C:\Users\*.kys"^) do echo Spaghetti ^> "%%%%~F" > "C:\ProgramData\Kys\injector.bat"
请注意,如果此代码 放置在使用for
的另一个%%F
循环中,则仅 。
顺便提一下,您是否知道echo text > file.ext
实际上将>
符号前的 SPACE 写入文件file.ext
?请参阅this post以了解如何避免这种情况。
答案 1 :(得分:0)
您无法使用一个命令写入不同位置的多个文件。找到每个文件并单独写:
for /r "c:\users\" %%a in ("*.kys") do echo Spaghetti > "%%a"