Board logo

标题: [文本处理] 批处理文件追加为何失败? [打印本页]

作者: wangze78    时间: 2011-5-16 13:56     标题: 批处理文件追加为何失败?

我自己写了段脚本,但是失败了,请帮忙看看问题出在哪?
  1. @echo off&setlocal enableDelayedExpansion
  2. for /f "delims=" %%a in ('dir e:\data /a:-d /b') do (
  3. if "%%~xa"=="" set a=%%a
  4. md !a:~0,5!
  5. if exist e:\data\!a:~0,5!\"%%a" goto addfile  else goto movefile
  6. :addfile
  7. type e:\data\"%%a">>e:\data\!a:~0,5!\"%%a"
  8. :movefile
  9. move "%%a" !a:~0,5!
  10. )
复制代码

作者: CrLf    时间: 2011-5-16 14:06

语块内不能有标签
作者: wangze78    时间: 2011-5-16 15:14

语块内不能有标签
zm900612 发表于 2011-5-16 14:06


高人能否说的明白点,谢谢
作者: Commander    时间: 2011-5-16 15:20

  1. @echo off&setlocal enableDelayedExpansion
  2. for /f "delims=" %%a in ('dir e:\data /a:-d /b') do (
  3.     if "%%~xa"=="" (
  4.         set a=%%a
  5.     )
  6.     md !a:~0,5!
  7.     if exist e:\data\!a:~0,5!\"%%a" (
  8.         type e:\data\"%%a">>e:\data\!a:~0,5!\"%%a"
  9.     ) else (
  10.         move "%%a" !a:~0,5!
  11.     )
  12. )
复制代码

作者: wangze78    时间: 2011-5-16 15:44

@echo off&setlocal enableDelayedExpansion
for /f "delims=" %%a in ('dir e:\data /a:-d /b') do (
    if "%%~xa"=="" (
        set a=%%a
    )
    md !a:~0,5!
    if exist e:\data\!a:~0,5!\"%%a" ( ...
Commander 发表于 2011-5-16 15:20



运行后显示:此时不应有else
作者: Batcher    时间: 2011-5-17 02:33

5# wangze78


把@echo off删掉,看看哪一步出错了。
作者: hanyeguxing    时间: 2011-5-17 12:35

本帖最后由 hanyeguxing 于 2011-5-17 12:47 编辑

1,() 内使用 : 时不能令此行位于最后一行,不能令其上、下有空行
2,if 语法错误,else 前的命令使用 ()
3,禁止在 () 内 goto 循环跳转
4,引号使用错误
  1. @echo off&setlocal enableDelayedExpansion
  2. cd/d "e:\data"
  3. for /f "delims=" %%a in ('dir /a:-d /b') do if "%%~xa"=="" (
  4.   set a=%%a&set "a=!a:~0,5!"
  5.   md "!a!" 2>nul
  6.   if exist "!a!\%%a" (type "%%a">>!a!\%%a") else move "%%a" "!a!"
  7. )
复制代码

作者: wangze78    时间: 2011-5-18 17:14

1,() 内使用 : 时不能令此行位于最后一行,不能令其上、下有空行
2,if 语法错误,else 前的命令使用 ()
3,禁止在 () 内 goto 循环跳转
4,引号使用错误@echo off&setlocal enableDelayedExpansion
cd/d "e:\ ...
hanyeguxing 发表于 2011-5-17 12:35


版主,运行后没反应啊,我的本意是如果有相同文件名就追加内容,没有就拷贝;
运行后的dos窗口:
E:\data>ccc.bat

E:\data>setlocal enableDelayedExpansion

E:\data>cd/d "e:\data"

E:\data>




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