[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 求助 CMD 的文件內容修改代碼

有个文件 A .txt 內容有 如下二个部份 IP= XXX.XxX.XXX.XX  想以賦值 %AA% 去取代 XXX.XXX.XXX.XX 的部份 第二部份是內容 "文件ID=0000|0000|0000|0000|0000|0000|0000|0000"想以賦值 %BB% 取代 0000|0000|0000|0000|0000|0000|0000|0000 或去除 只保留 文件ID= 這樣的文件操作 CMD的代碼該如何寫? 我有嘗試找大大們的文章 可是對於符号的變義不懂 ~ 求大大幫助

  1. @echo off
  2. for /f "tokens=1* delims==" %%a in (a.txt) do (
  3.   if /i "%%a"=="IP" set "AA=%%b"
  4.   if /i "%%a"=="文件ID" set "BB=%%b"
  5. )
复制代码
1

评分人数

    • jamiemkin: 對你的景仰如长江之水连绵不绝,如黄河泛滥 ...技术 + 1

TOP

apang 发表于 2012-10-1 09:07



    感謝大大的速度回覆 ~ 可是這沒有寫回文件裡的命令~ 我就是在寫回文件裡這裡卡住了~可否請大大再完善一下

TOP

呃,如果a.txt只有这两行内容:
IP=XXX.XXX.XXX.XX
文件ID=0000|0000|0000|0000|0000|0000|0000|0000
  1. @echo off
  2. set "AA=Bat"
  3. set "BB=Home"
  4. (for /f "tokens=1* delims==" %%a in (a.txt) do (
  5.   if /i "%%a"=="IP" echo,%%a=%AA%
  6.   if /i "%%a"=="文件ID" echo,%%a=%BB%
  7. ))>b.txt
复制代码

TOP

呃,如果a.txt只有这两行内容:
IP=XXX.XXX.XXX.XX
文件ID=0000|0000|0000|0000|0000|0000|0000|0000
apang 发表于 2012-10-1 09:54



大大~~ 我錯了~ 沒有書寫清楚 文件內不只這二行~

TOP

回复 5# jamiemkin

看在今天过节的份上,原谅你了,下不为例!
  1. @echo off
  2. set "AA=Bat"
  3. set "BB=Home"
  4. (for /f "tokens=1* delims==" %%a in (a.txt) do (
  5.   if /i not "%%a"=="IP" (
  6.     if /i not "%%a"=="文件ID" (echo,%%a=%%b
  7.     ) else echo,%%a=%BB%
  8.   ) else echo,%%a=%AA%
  9. ))>b.txt
复制代码

TOP

回复  jamiemkin

看在今天过节的份上,原谅你了,下不为例!
apang 发表于 2012-10-1 10:04


大大 看在今天过节的份上 再幫我一下~ 我試運行了這代碼出現了三个問題~ 1. 在其它行的" ] " 的符号後面出了 "="的符号   2. 原有的空白行不見了~  3. "ID"= 的部份沒被%BB% 替換~ ID的後續部份和%BB%  是有 "|" 的符号存在的~  不知道是不是這樣原因    ID=0000|0000|0000|0000|0000|0000|0000|0000

TOP

回复 7# jamiemkin

把a.txt完整内容贴出来,或作为附件传上来

TOP

回复  jamiemkin

把a.txt完整内容贴出来,或作为附件传上来
apang 发表于 2012-10-1 10:29

a.txt 內容

    [DVD]
Path=C:\工作用\CCC.exe
DllName=DXDr.dll
UserName=XXXXX
PassWord=XXXXXXX
SkinIndex=1


[Server]
IP=xxxxxxxxxxxx
ServerPort=8888
文件ID=727495|08D00B172936F3575111DC17

[系统设置]
行为列表=8
排程行为=校正文件
已處理文件数量=38
自动檢查=1

TOP

本帖最后由 apang 于 2012-10-1 13:39 编辑
  1. @echo off
  2. set "AA=Bat"
  3. set "BB=123^|456^|789"
  4. (for /f "tokens=1* delims=:" %%a in ('findstr /n .* a.txt') do (
  5.   set "str=%%b"
  6.   setlocal enabledelayedexpansion
  7.   if /i not "!str:~,3!"=="IP=" (
  8.     if /i not "!str:~,5!"=="文件ID=" (echo,!str!
  9.     ) else echo,文件ID=%BB%
  10.   ) else echo,IP=%AA%
  11.   endlocal
  12. ))>b.txt
复制代码

TOP

回复 10# apang

可以用了~~ 謝謝~ 能再幫解另一个文件的批處理操作嗎?

TOP

返回列表