找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30076|回复: 4

[文本处理] 批处理如何修改替换文本中的指定字符串?

[复制链接]
发表于 2014-6-18 11:45:34 | 显示全部楼层 |阅读模式
本帖最后由 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 就能修改

感謝
发表于 2014-6-18 13:35:38 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2014-6-18 15:39:46 | 显示全部楼层
本帖最后由 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
)

字串代換.但會把整行都換掉.不知道寫錯那兒.
麻煩指教
发表于 2014-6-18 16:03:51 | 显示全部楼层
回复 3# lung6549


    执行2楼的代码之前,需要先下载一个sed.exe
 楼主| 发表于 2014-6-18 17:11:22 | 显示全部楼层
回复 4# Batcher


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

小弟也很感謝您的建議
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 06:11 , Processed in 0.026656 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表