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

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

各位版友大家好,我想请教一个批处理取代时的问题。
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
复制代码

似乎要用到命令嵌套

TOP

参考此贴顶楼第“一”部分:
http://bbs.bathome.net/viewthread.php?tid=4831

TOP

感谢版大的回答,
那帖对我来说好难啊,
我看了很久,有看到很多%%!%!~:,!~%,
可还是没找到取代的部分,
请问和 call set num=%%var:~!n!,1%% 有关吗?
但这句好像只是提出一个字元。

TOP

回复 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外,不然有可能达到最大递归层的风险。
看得多说得多,远比不上写得多。

TOP

原来语法是这样,感谢。
最大递归层我最近在档案大小约400kb时有遇到,
cmd视窗闪一下就消失。

TOP

返回列表