Windows批处理方式替换所有子目录中的文件为单个文件(复制,重命名所有文件)

3

我对cmd命令有很好的掌握,但这可能需要一个变量或循环,在批处理命令中我就失败了。如果可以,请帮个忙!

-- 每个子目录下大约有1-20个HTML文件,共有大约100个子目录。在根目录下也有大约100个HTML文件。 -- 需要用相同的HTML源替换上述目录中的所有HTML文件(复制现有文件并保持名称不变)。基本上是尝试用重定向脚本替换所有现有文件,以便直接为书签的人提供服务。我们正在运行一个简单的Web服务器,没有访问服务器端重定向的权限,所以试图通过重命名文件来实现此目的(被锁定的公司环境)。

看起来非常简单。我无法通过通配符将相同的文件复制过去进行替换。我只能成功替换第一个文件,但其余的文件都会失败。是否有人有任何建议?


不需要提供原始文本和修改后的文本示例。 - Angus Comber
2个回答

3

命令提示符中可以这样做。在批处理文件中使用时,请将%替换为%%

for /r "c:\base\folder" %a in (*.html) do copy /y "d:\redirect.html" "%a"

非常感谢您,这个简单的命令提示行解决了问题。非常赞!!! - LAChris
很好。我没有正确理解这个问题。 - Angus Comber

1

如果您没有更具体的文件内容更新要求,我建议采用以下粗略方法。

为了重新创建您的示例,我必须创建一些文件夹。运行此命令以执行:

for /l %i in (1,1,20) do mkdir fold%i

我随后使用这个脚本创建了一些示例文件:

@echo off
set number=0
for /d %%i in (c:\Logs\htmltest\*) do call :makefiles %%i
goto :EOF

:makefiles
set /a number+=1
touch %1\file%number%.txt
echo %number% >%1\file%number%.txt

我随后使用此脚本将更改的文本追加到文件中。不确定这是否符合您的要求 - 可能您需要更复杂的内容。
@echo off
set number=0
for /d %%i in (c:\Logs\htmltest\*) do @for %%f in ("%%i\*.txt") do call :changetext %%f
goto :EOF

:changetext
echo changing file contents to ^"changed^" for file: %1
echo changed>>%1

非常感谢您抽出时间来撰写这篇文章。我认为它对于我需要做的事情有点过于复杂,但希望它能帮助其他人。 - LAChris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接