[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
原帖由 wxcute 于 2009-2-2 12:31 发表
代码更新,请测试@echo off
if not exist Not12\ md Not12
for /f "delims=" %%X in ('dir/b *.txt') do (
 set flag=
 call :wordErr "%%X"
 setlocal enableDelayedExpansion
 for /f "usebackq skip=1  ...

多次麻煩

感謝萬分

我剛測試您代碼,有符合12個∥的文本,也被移到NOT12文件夾裡

請問是為什麼呢? 謝謝!

以下是被移到NOT12文件夾的文本範例

TOP

原帖由 terse 于 2009-2-2 15:14 发表


去掉 echo %%a‖%%b‖%%c‖%%d      ‖%%b‖%%c‖%%d  只留echo %%a


前輩

文本的處理上都沒有問題了

但是有部份文本會多出一行只留下var字符


請問是哪裡錯誤了呢?

再煩請提點,感謝再感謝

[ 本帖最后由 leo1984 于 2009-2-2 22:50 编辑 ]

TOP

我在 25 楼也有提到,有些 12 个分隔符的被判断错是因为感叹号的缘故。

以下能处理 17 个分开的感叹号。再多的话就得换个思路处理这个符号了。
  1. @echo off
  2. if not exist Not12\ md Not12
  3. for /f "delims=" %%X in ('dir/b *.txt') do (
  4.  set flag=
  5.  call :wordErr "%%X"
  6.  setlocal enableDelayedExpansion
  7.  for /f "usebackq skip=1 tokens=1-17* delims=!" %%i in ("Tmp_%%X") do (
  8.   set txtL=%%i%%j%%k%%l%%m%%n%%o%%p%%q%%r%%s%%t%%u%%v%%w%%x%%y%%z
  9.   set txtL=!txtL:"=!
  10.   call :judge12 "!txtL!"
  11.  )
  12.  if defined flag move "Tmp_%%X" Not12
  13.  endlocal enableDelayedExpansion
  14.  if exist "Tmp_%%X" for /f "usebackq delims=" %%I in ("Tmp_%%X") do (
  15.   for /f "usebackq tokens=1-3* delims=‖" %%a in ('%%I') do (
  16.    if exist "new_%%X" (
  17.     echo %%a‖%%b‖?‖%%d>>"new_%%X"
  18.    ) else echo %%I>"new_%%X"
  19.   )
  20.  )
  21. )
  22. pause
  23. goto :eof
  24. :judge12
  25.  set n=
  26.  set contain=%1
  27. :lp
  28.  set contain=%contain:*‖="%
  29.  set/a n+=1
  30.  if %n% lss 12 (
  31.   if %contain%=="" set flag=1
  32.   goto :lp
  33.  )
  34.  if not %contain%=="" set flag=1
  35.  goto :eof
  36. :wordErr
  37.  cd.>"Tmp_%~1"
  38.  for /f "delims= eol=" %%i in ('findstr /v "<<删除>>" %1') do (
  39.   echo+%%i>>"Tmp_%~1"
  40.  )
复制代码

[ 本帖最后由 wxcute 于 2009-2-3 19:43 编辑 ]

TOP

原帖由 wxcute 于 2009-2-3 19:40 发表
我在 25 楼也有提到,有些 12 个分隔符的被判断错是因为感叹号的缘故。

以下能处理 17 个分开的感叹号。再多的话就得换个思路处理这个符号了。@echo off
if not exist Not12\ md Not12
for /f "delims=" %%X in ...

可以用了

感謝版主用心不厭其煩的教導

好心有好報,希望前輩能更上層樓

TOP

返回列表