Board logo

标题: [文本处理] 批处理如何修改替换文本中的指定字符串? [打印本页]

作者: lung6549    时间: 2014-6-18 11:45     标题: 批处理如何修改替换文本中的指定字符串?

本帖最后由 pcl_test 于 2016-8-17 13:52 编辑

小弟有很多家店要處理

檔案:abc.ini
以下內容:

173600
P00001
某某店
01
0001
192.6.6.51
H173600
\\H173600\abcpsv
192.6.6.100
f:
20
2-品名
N-認證
Y-發票
1-連線
123456
實業(某某店)
--------------------------------------------------
要修改 "某某店" 改成例如 "成功店"
但有想要把 成功店 變成另一個文件呼叫.例如 name.txt
方便以後只要修改name.txt 就能修改

感謝
作者: Batcher    时间: 2014-6-18 13:35

  1. @echo off
  2. REM 从 name.txt 文件里面读取店名,比如:成功店
  3. set /p NewName=<name.txt
  4. REM sed.exe 下载地址 http://pan.baidu.com/share/link?shareid=452449&uk=1124163200
  5. sed "s/某某店/%NewName%/g" abc.ini > abc_new.ini
复制代码

作者: lung6549    时间: 2014-6-18 15:39

本帖最后由 lung6549 于 2014-6-18 16:03 编辑

回复 2# Batcher

感謝
但SED 什麼呢?會出現錯誤.

小弟有寫一個批次

set /p NewName=<name.txt
call:sub "abacus.ini" "某某店" "%NewName%"

:sub
findstr "\<%~3\>" %1 >nul
if %ERRORLEVEL%==1 ( REM 若與內容不符則繼續執行
   for /f "tokens=1* delims=:" %%i in ('findstr /n ".*" %1') do (
       if "%%j"=="" (echo.>>tmp) else (
          echo %%j|find %2>nul&&(call echo %~3>>tmp)||(echo %%j>>tmp)
       )
   )
   copy tmp %1 /y >nul&&del tmp
)

字串代換.但會把整行都換掉.不知道寫錯那兒.
麻煩指教
作者: Batcher    时间: 2014-6-18 16:03

回复 3# lung6549


    执行2楼的代码之前,需要先下载一个sed.exe
作者: lung6549    时间: 2014-6-18 17:11

回复 4# Batcher


感謝.下後可以用.
但有二個問題.
1.可以用修改的方式修改文件嗎? 因為如果產生另一個檔案.還要在改名稱回去一次.
2.因工作關係不太能用外部程式.希望能用windows 本身指令.

小弟也很感謝您的建議




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