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

时间:2014-03-16 19:34:41

标签: batch-file cmd

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

- 大约有100个子目录,每个子目录中包含1-20个HTML文件。根目录中也有大约100个HTML文件。 - 需要使用相同的HTML源替换上述目录中的所有HTML文件(复制现有文件并保持名称相同)。基本上尝试使用重定向脚本将所有现有文件替换为新服务器,以便直接添加书签的人员。我们正在运行一个普通的网络服务器而无法访问服务器端重定向,因此只需重命名文件(锁定公司环境)就可以做到这一点。

看起来很简单。通过将相同的文件复制到替换,我无法使用通配符。我只更换了第一个文件,但其余文件将失败。任何有任何建议的人?

2 个答案:

答案 0 :(得分:1)

这应该从命令提示符处执行。将%替换为%%,以便在批处理文件中使用。

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

答案 1 :(得分:0)

如果不知道如何更新文件内容,我建议采用以下粗略方法。

要重新创建示例,我必须创建一些文件夹。运行此命令执行此操作:

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