Board logo

标题: [文本处理] 求助 CMD 的文件內容修改代碼 [打印本页]

作者: jamiemkin    时间: 2012-10-1 08:58     标题: 求助 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的代碼該如何寫? 我有嘗試找大大們的文章 可是對於符号的變義不懂 ~ 求大大幫助
作者: apang    时间: 2012-10-1 09:07

  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. )
复制代码

作者: jamiemkin    时间: 2012-10-1 09:23

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



    感謝大大的速度回覆 ~ 可是這沒有寫回文件裡的命令~ 我就是在寫回文件裡這裡卡住了~可否請大大再完善一下
作者: apang    时间: 2012-10-1 09:54

呃,如果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
复制代码

作者: jamiemkin    时间: 2012-10-1 09:56

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



大大~~ 我錯了~ 沒有書寫清楚 文件內不只這二行~
作者: apang    时间: 2012-10-1 10:04

回复 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
复制代码

作者: jamiemkin    时间: 2012-10-1 10:23

回复  jamiemkin

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


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

回复 7# jamiemkin

把a.txt完整内容贴出来,或作为附件传上来
作者: jamiemkin    时间: 2012-10-1 13:28

回复  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
作者: apang    时间: 2012-10-1 13:29

本帖最后由 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
复制代码

作者: jamiemkin    时间: 2012-10-1 14:21

回复 10# apang

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




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