Board logo

标题: [文件操作] 给非隐藏文件添加标志的批处理为何提示有不是内部或外部命令? [打印本页]

作者: wpNature    时间: 2011-7-18 09:01     标题: 给非隐藏文件添加标志的批处理为何提示有不是内部或外部命令?

  1. @echo off&setlocal ENABLEDELAYEDEXPANSION&chcp 936>nul
  2. rem 给当前目录内的非隐藏文件添加ok标志 20:53 2011-6-12
  3. rem (文件名含有“证券清算文件.txt”字符串的,扩展名为.ok的文件 不进行处理)
  4. (
  5. echo dt = CreateObject("scripting.filesystemobject"^).GetFile(WScript.Arguments(0^)^).DateLastModified
  6. echo WScript.Echo Split(dt, " "^)(0^) ^& "|" ^& Split(dt, " "^)(1^)
  7. )>%tmp%\getime.vbs
  8. set lf=^
  9. :: 上面必须空两行
  10. for /f %%a in ('copy/z %~s0 nul')do set cr=%%a
  11. for /f "tokens=1-2 delims==" %%a in ('set $out 2^>nul')do set %%a=
  12. for /f "delims=" %%a in (
  13.     %= dir命令后面跟文件通配符 =%
  14.     ' dir/a-d/b *.* 2^>nul ^|find /v "证券清算文件.txt" '
  15. )do if "%%~nxa" neq "%~nx0" if "%%~xa" neq ".ok" (
  16.     set "nxa=%%~nxa"
  17.     set "fa=%%~fa"
  18.     for /f "tokens=1-4 delims=-|" %%A in (
  19.         'cscript //nologo %tmp%\getime.vbs "!fa!"'
  20.     )do set y=%%A&set m=0%%B&set d=0%%C&set tm=0%%D
  21.     set ymd=!y!!m:~-2!!d:~-2!
  22.     for %%p in ($out!ymd!)do set "%%p=!%%p!%%~nxa|%%~za|!ymd!|!tm:~-8!\n"
  23.     set file=!ymd!证券清算文件.txt
  24.     set/p=<nul>"!nxa!.ok"
  25.     set/p=<nul>!file!.ok
  26.     echo !nxa!&echo ................................... OK^^!
  27. )
  28. for /f "tokens=1-2 delims==" %%a in ('set $out')do (
  29.     set s=%%b&set file=%%a
  30.     for %%f in ("!cr!!lf!")do set/p=!s:\n=%%~f!<nul>"!file:*$out=!证券清算文件.txt"
  31. )
  32. pause
复制代码

作者: mxxcgzxxx    时间: 2011-7-18 09:48

应该是单双引号转义问题
在“”内的函数转换出来的头尾‘’没起作用
建议将单引放在最后引用函数的外边
同时注意|的转义^|
  1. for %%f in ('!cr!!lf!')do set/p=!s:\n=%%~f!<nul>"!file:*$out=!证券清算文件.txt"
复制代码





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