Board logo

标题: 【已解决】(急)15元改一个成品:因为变量延迟,输出的字符串里叹号都没了 [打印本页]

作者: wheat611    时间: 2013-12-17 13:31     标题: 【已解决】(急)15元改一个成品:因为变量延迟,输出的字符串里叹号都没了

本帖最后由 wheat611 于 2013-12-18 09:31 编辑

具体报酬:15元人民币
支付方式:支付宝转账,网银转账。
联系方式:QQ 56667011
有效期限:13/12/18之前
需求描述:
下面是某.bat文件全文。
第79行输出语句 ECHO;!str1!>>"!curPath!\tmp.c"里面,把叹号全删掉了,但是变量延迟我不会改。
改一下能原样输出就行。
  1. @ECHO OFF
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. SET "curPath=%CD%"
  4. SET "aFolder=adlint\"
  5. SET "var1=/usr/include"
  6. SET "var2=#include"
  7. SET "var3=!curPath:\=/!"
  8. SET "var3=!var3!/copy/usr/include"
  9. SET "var4=common\interface\include"
  10. SET "HEXE=%1"
  11. IF "!HEXE!" EQU "" (
  12. ECHO Hidemaru is searching...
  13. FOR %%i IN ("C:\Program Files") DO (
  14.   FOR /F "delims=" %%B IN ('DIR /S /B %%i\Hidemaru.exe') DO (
  15.    IF EXIST "%%B" (
  16.     SET "HEXE=%%B"
  17.     GOTO START
  18.    )
  19.   )
  20. )
  21. )
  22. :START
  23. SET "HEXE=%HEXE:"=%"
  24. IF NOT EXIST "log.txt" (
  25.   ECHO 【log.txt】is none!
  26.   PAUSE&&EXIT
  27. )
  28. :CCHECK
  29. ECHO.
  30. IF EXIST "!curPath!\tmpchk.txt" (DEL /F /S /Q "!curPath!\tmpchk.txt">NUL)
  31. FOR /F %%A IN ('FINDSTR .* "!curPath!\log.txt"') DO (
  32. CD /D %%A
  33. FOR /R %%i IN (*.c) DO (
  34. "!HEXE!" /h /x"!curPath!\cmd\MakeNoBom.mac" /a"%%i"
  35.   FOR /F "tokens=1* delims=:" %%A IN ('FINDSTR /N .* "%%i"') DO (
  36.    SET "str1=%%B"
  37.    IF NOT "!str1!" EQU "" (
  38.     IF /I "!str1:~0,8!" EQU "!var2!" (
  39.      CALL SET "str2=%%str1:!!var1!!=%%"
  40.      IF NOT "!str1!" EQU "!str2!" (ECHO %%i>>"!curPath!\tmpchk.txt")
  41.     )
  42.    )
  43.   )
  44. )
  45. )
  46. IF EXIST "!curPath!\tmpchk.txt" (
  47. FOR /F %%A IN ('FINDSTR .* "!curPath!\tmpchk.txt"') DO (
  48.   ECHO %%A
  49.   REM C file path and name is written.
  50.   FOR %%i IN ("%%A") DO (
  51.    CALL :SHOW %%i
  52.    SET "cPath=%%~dpi"
  53.   )
  54.   REM rollback at last.
  55.   COPY /Y "%%A" "!curPath!\copy">NUL
  56.   IF EXIST "!curPath!\tmp.c" (DEL /F /S /Q "!curPath!\tmp.c">NUL)
  57.   REM change the path
  58.   FOR /F "tokens=1* delims=:" %%i IN ('FINDSTR /N .* "%%A"') DO (
  59.    SET "str1=%%j"
  60.    IF DEFINED str1 (
  61.     IF /I "!str1:~0,8!" EQU "!var2!" (
  62.      CALL SET "str2=%%str1:!!var1!!=%%"
  63.      IF NOT "!str1!" EQU "!str2!" (CALL SET "str1=%%str1:!var1!=!var3!%%")
  64.      ECHO;!str1!>>"!curPath!\tmp.c"
  65.     ) ELSE (ECHO;%%j>>"!curPath!\tmp.c")
  66.    ) ELSE (ECHO.>>"!curPath!\tmp.c")
  67.   )
  68.   REM cut file
  69.   REN "!curPath!\tmp.c" !cName!
  70.   MOVE /Y "!curPath!\!cName!" !cPath!
  71. )
  72. )
  73. :SHOW
  74. SET cName=%~nx1
复制代码

作者: wheat611    时间: 2013-12-17 14:12

此帖仅作者可见
作者: Batcher    时间: 2013-12-17 15:31

此帖仅作者可见
作者: wheat611    时间: 2013-12-17 15:37

此帖仅作者可见
作者: Batcher    时间: 2013-12-17 17:51

此帖仅作者可见
作者: apang    时间: 2013-12-17 19:19

此帖仅作者可见
作者: wheat611    时间: 2013-12-18 09:12

此帖仅作者可见
作者: wheat611    时间: 2013-12-18 09:13

此帖仅作者可见
作者: wheat611    时间: 2013-12-18 09:30

此帖仅作者可见
作者: apang    时间: 2013-12-18 10:18

此帖仅作者可见




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