如何批量覆盖文件时如何搜索子文件夹?

时间:2016-12-01 15:22:06

标签: batch-file

我有一个制作两个文件的批处理脚本。它首先创建一个放置所有内容的目录。然后,它生成一个.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

2 个答案:

答案 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"