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

[文本处理] 批处理如何将变数取代成变数+字串?

[复制链接]
发表于 2012-7-5 23:00:52 | 显示全部楼层 |阅读模式
各位版友大家好,我想请教一个批处理取代时的问题。
set "line=!line:H1=H2!"
可以将H1取代成H2。

如果我想将「H1」取代成「H变数」
H2丶H3丶H4...
请问应该set里面要怎麽写呢?
感谢~
%1是D:/nc/0704a12.nc
  1. @ECHO OFF
  2. (for /f "tokens=1* delims=:" %%i in ('findstr /n .* %1') do (
  3. set "line=%%j"
  4. set "tool=%1"
  5. setlocal enabledelayedexpansion
  6. set "tool=!tool:~-4,1!
  7. if "!line!"=="" (echo.!line!) else (
  8. set "line=!line:H1=H2!"
  9. echo.!line!
  10. endlocal
  11. )))>back.txt
复制代码
发表于 2012-7-5 23:15:14 | 显示全部楼层
似乎要用到命令嵌套
发表于 2012-7-5 23:39:28 | 显示全部楼层
参考此贴顶楼第“一”部分:
http://bbs.bathome.net/viewthread.php?tid=4831
 楼主| 发表于 2012-7-7 12:25:29 | 显示全部楼层
感谢版大的回答,
那帖对我来说好难啊,
我看了很久,有看到很多%%!%!~:,!~%,
可还是没找到取代的部分,
请问和 call set num=%%var:~!n!,1%% 有关吗?
但这句好像只是提出一个字元。
发表于 2012-7-7 13:09:26 | 显示全部楼层
回复 4# Topgunguy
  1. @ECHO OFF
  2. (for /f "tokens=1* delims=:" %%i in ('findstr /n .* %1') do (
  3. set "line=%%j"
  4. set "tool=%1"
  5. setlocal enabledelayedexpansion
  6. set "tool=!tool:~-4,1!
  7. if "!line!"=="" (echo.!line!) else (
  8. for %%a in (!tool!) do set "line=!line:H1=H%%a!"
  9. echo.!line!
  10. )
  11. endlocal
  12. ))>back.txt
复制代码
需要把endlocal放到if外,不然有可能达到最大递归层的风险。
 楼主| 发表于 2012-7-8 10:39:59 | 显示全部楼层
原来语法是这样,感谢。
最大递归层我最近在档案大小约400kb时有遇到,
cmd视窗闪一下就消失。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 07:14 , Processed in 0.011805 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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