Board logo

标题: [文本处理] 批处理怎样替换TXT文本里面的关键内容为文件名? [打印本页]

作者: 一心她爸    时间: 2019-1-25 09:10     标题: 批处理怎样替换TXT文本里面的关键内容为文件名?

修改TXT文本里面的部分指定内容(如我爱你)多处为各文件的文件名(如123456789等等),小木大师的代码,运行后,发现修改了别的文件内容,有没有代码可以做到像单个文件查找替换的效果.
作者: xczxczxcz    时间: 2019-1-25 10:03

  1. ls *.txt|%{$(((gc $_ -readcount 0) -join "`r`n") -replace '关键内容',"$($_.name)")|sc $($_.basename + '-new' + $_.Extension) -enc Default}
复制代码

作者: Batcher    时间: 2019-1-25 11:00

把你试过的代码发出来看看哪里没写对
作者: 一心她爸    时间: 2019-1-25 12:41

  1. @Echo Off
  2. SetLocal EnableDelayedExpansion
  3. For %%i In (*.txt) Do (
  4.     For /F "Usebackq Delims=" %%j In ("%%~nxi") Do (
  5.         Set Str=%%j
  6.         Echo !Str:我爱你=%%~ni!>>New_%%~nxi
  7.     )
  8.     Del %%~nxi >nul
  9.     Ren New_%%~nxi %%~nxi
  10. )
复制代码
回复 3# Batcher
作者: Batcher    时间: 2019-1-25 12:45

回复 4# 一心她爸


    只修改一个文件是吗?把第3行的*.txt改成文件名
作者: 一心她爸    时间: 2019-1-25 12:47

请问您给的代码是怎么用的?我试了,没有效果回复 2# xczxczxcz
作者: 一心她爸    时间: 2019-1-25 12:48

修改3千个以内
作者: 一心她爸    时间: 2019-1-25 12:57

回复 5# Batcher
例如附件的文件,将我爱你替换为文件名,需要批量操作
作者: Batcher    时间: 2019-1-25 13:57

回复 8# 一心她爸


    4楼代码处理这个文件会导致什么问题?
作者: 一心她爸    时间: 2019-1-25 14:19

回复 9# Batcher 用excel匹配,发现346行的空白行给清除了,其他的变化,还没发现
作者: Batcher    时间: 2019-1-25 15:01

回复 6# 一心她爸


2楼是PowerShell代码,执行方式请参考:
http://bbs.bathome.net/thread-31071-1-1.html
作者: yhcfsr    时间: 2019-1-25 15:53     标题: 借用2楼代码

本帖最后由 yhcfsr 于 2019-1-25 16:21 编辑

回复 2# xczxczxcz
WIN10
  1. @echo off
  2. powershell -NoLogo -NoProfile -command "& {$files=ls *.txt -r;foreach($file in $files){$content=(type $file -ReadCount 0) -replace '我爱你',$file.BaseName;sc $($file.FullName+'.log') $content -encoding  default}}"
  3. pause
复制代码
WIN7系统
  1. @echo off
  2. powershell -NoLogo -NoProfile -command "& {$files=ls *.txt -r;foreach($file in $files){$content=(type $file -ReadCount 0) -replace '我爱你',$file.BaseName;sc $($file.FullName+'.log') $content -encoding  String}}"
  3. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2