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

bat在开启变量延迟后好像文件名含有 ! 的的文件不能找到了,这是bug吗?
  1. @echo off
  2. set "file=!Setup.txt"
  3. set /a "cnt=1"
  4. for /f "delims=" %%a in ('"type "%file%"&&cd.>"%file%""') do (
  5.     >>"%file%",call :fn "%%a" %%cnt%%
  6.     set /a "cnt+=1"
  7. )
  8. pause
  9. exit /b
  10. :fn
  11. if %2 equ 1001 (
  12.     echo,MaxLevel=255
  13. ) else (
  14.     echo,%~1
  15. )
复制代码
bat的字符处理确实不行,若行中有特殊字符像 & | > <就出错,稳妥还是用powershell
或vbs  js

TOP

回复 9# heimahack


    什么Windows系统没有power shell ?

TOP

回复 12# heimahack


    2003可能没有powershell环境。。。。。
但bat不稳定,用vbs或js可行吧。

TOP

本帖最后由 flashercs 于 2018-9-25 21:14 编辑

回复 14# heimahack
保存为 替换行.js 文件
  1. (function(e){function t(e,t){WScript.Echo("[object Error]"===Object.prototype.toString.call(e)?[e.name,"source: "+(void 0===t?"":t),"number: "+(e.number>>>0).toString(16),"equipment: "+(e.number>>16&8191),"code: "+(65535&e.number),"Information: "+e.message].join("\n"):e)}var i,r,n,c=new ActiveXObject("Scripting.FileSystemObject"),o=/[^\r\n]*(\r\n|\n|\r)/g,l=0;new ActiveXObject("WScript.Shell").CurrentDirectory=c.GetParentFolderName(WScript.ScriptFullName),file=""+e.file;try{i=c.OpenTextFile(file,1,!1)}catch(e){return void t(e,"Opening file "+file)}r=i.ReadAll(),i.Close();try{i=c.OpenTextFile(file,2,!1)}catch(e){return void t(e,"Writing to file "+file)}for(;n=o.exec(r);)i.Write(void 0===e[++l]?n[0]:e[l]+n[1]);i.Close()})({file:"D:\\work\\1.txt",1001:"CHECKGAMEGOLD > 4",66:"MAXLEVEL=255"});
复制代码
功能:替换文本指定行
参数:file:“要替换的文件名”   注: 文件路径名用\\而不是\分割符
        行数:"要替换的文字"     可以替换多行。

TOP

返回列表