【问题标题】:Batch replace string in every subfolder?批量替换每个子文件夹中的字符串?
【发布时间】:2014-10-14 20:12:27
【问题描述】:

是否可以批量替换 cmd 文件中每个子文件夹中的文本字符串?

文件夹结构为:

根文件夹(批处理脚本) > 几个子文件夹 > job(folder number)_EncodeAudio.cmd > 文本字符串

cmd 文件中的128 字符串应替换为384,并且每个子文件夹(job1、job2、job3)都有相同的job(folder number)_EncodeAudio.cmd 文件。

用一张图片更好地解释这一点

【问题讨论】:

  • 必须是批处理脚本吗? PowerShell 让这样的事情变得微不足道。
  • 是的,最好是BAT文件。
  • 这很不幸。如果您另有决定,Get-ChildItem *.bat -Recurse | ForEach-Object { (Get-Content $_) | ForEach-Object { $_ -replace 128 384 } | Set-Content $_ } 之类的东西应该可以工作。
  • 您的脚本返回错误:Unexpected token '384' in expression or statement. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordEx ception + FullyQualifiedErrorId : UnexpectedToken
  • 在两个数字之间添加了一个逗号,它可以工作!

标签: windows batch-file cmd batch-processing batch-rename


【解决方案1】:

使用 Billy 的脚本和 BAT 调用 Powershell 脚本。

BAT 文件:

CD /D %root% C:\Root Folder Location
powershell.exe -ExecutionPolicy ByPass -file batch.ps1

PS1 文件:

Get-ChildItem *.cmd -Recurse | ForEach-Object { (Get-Content $_) | ForEach-Object { $_ -replace '128','384' } | Set-Content $_ }

【讨论】:

  • 此脚本将文件编码更改为 ascii 并在文件末尾添加换行符
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 2011-04-08
  • 2021-05-22
  • 1970-01-01
相关资源
最近更新 更多