Board logo

标题: [其他] 修改压缩文件内容的批处理错误在哪里? [打印本页]

作者: mengpm    时间: 2011-7-29 10:32     标题: 修改压缩文件内容的批处理错误在哪里?

下面的代码运行后会出错,弹出对话框“没有找到压缩文件”,“文件名、目录名或卷标语法不正确”
  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. If NOT Exist temp Md temp
  3. Set "RpStr=原内容1-现在内容1 原内容2-现在内容2 原内容3-现在内容3 原内容4-现在内容4"
  4. For /F tokens^=2delims^=^" %%A In ('Ftype winrar') Do Set "Mrar=%%A"
  5. For /F "delims=" %%A IN ('Dir /a-d /b /s *.rar') Do (
  6.   "%Mrar%" x "%~dp0\%%A" "%~dp0\temp"
  7.   Del "%~dp0\%%A"
  8.   For /R temp %%I IN (*.txt) Do (
  9.     (For /F "Usebackq Delims=" %%J IN ("%%I") Do (
  10.        Set "Str=%%J"
  11.        For %%K In ("%RpStr%") Do (
  12.          For /F "tokens=1,2 delims=-" %%L In ("%%K") Do Set "Str=!Str:%%L=%%M!"
  13.        )
  14.        Echo,!Str!
  15.     ))>"%%~dpI\tem"
  16.     Move "%%~dpI\tem" "%%I"
  17.     "%Mrar%" a -ep -dw "%~dp0\%%A" "%%I"
  18.   )
  19. )
  20. Rd temp
复制代码

作者: tmplinshi    时间: 2011-7-29 14:56

本帖最后由 tmplinshi 于 2011-7-29 15:00 编辑
@Echo Off&SetLocal EnableDelayedExpansion
If NOT Exist temp Md temp
Set "RpStr=原内容1-现在内容1 原内容2-现在内容2 原内容3-现在内容3 原内容4-现在内容4"
For /F tokens^=2delims^=^" %%A In ('Ftype winrar') Do Set "Mrar=%%A"
For /F "delims=" %%A IN ('Dir /a-d /b /s *.rar') Do (
  "%Mrar%" x "%~dp0\%%A" "%~dp0\temp"
  Del "%~dp0\%%A"
  For /R temp %%I IN (*.txt) Do (
    (For /F "Usebackq Delims=" %%J IN ("%%I") Do (
       Set "Str=%%J"
       For %%K In ("%RpStr%") Do (
         For /F "tokens=1,2 delims=-" %%L In ("%%K") Do Set "Str=!Str:%%L=%%M!"
       )
       Echo,!Str!
    ))>"%%~dpI\tem"
    Move "%%~dpI\tem" "%%I"
    "%Mrar%" a -ep -dw "%~dp0\%%A" "%%I"
  )
)

Rd temp


%~dp0 是路径,%%A 是完整路径。
"%~dp0\%%A" → "盘符:\路径\盘符:\路径\文件名" → - -|||
作者: mengpm    时间: 2011-7-30 11:32

  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. If NOT Exist temp Md temp
  3. Set "RpStr=原内容1-现在内容1 原内容2-现在内容2 原内容3-现在内容3 原内容4-现在内容4"
  4. For /F tokens^=2delims^=^" %%A In ('Ftype winrar') Do Set "Mrar=%%A"
  5. For /F "delims=" %%A IN ('Dir /a-d /b /s *.rar') Do (
  6.   "%Mrar%" x "%%A" "%~dp0\temp"
  7.   Del "%%A"
  8.   For /R temp %%I IN (*.txt) Do (
  9.     (For /F "Usebackq Delims=" %%J IN ("%%I") Do (
  10.        Set "Str=%%J"
  11.        For %%K In ("%RpStr%") Do (
  12.          For /F "tokens=1,2 delims=-" %%L In ("%%K") Do Set "Str=!Str:%%L=%%M!"
  13.        )
  14.        Echo,!Str!
  15.     ))>"%%~dpI\tem"
  16.     Move "%%~dpI\tem" "%%I"
  17.     "%Mrar%" a -ep -dw "%%A" "%%I"
  18.   )
  19. )
  20. Rd temp
复制代码
删掉那几处%~dp0了,可以运行了,但是不能替换内容,能帮忙看看是什么原因吗?
作者: cjiabing    时间: 2011-7-30 11:39

谁写的找谁去。不过"%~dp0\%%A" 通常也做“"%~dp0%%A" ”后面不用反斜杠,强制指程序所在目录。
作者: Batcher    时间: 2011-7-30 11:45

回复 3# mengpm


把@Echo Off删掉,多加几行echo和pause,自己先看看哪一步出错了。




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