
批處理延遲變量在根目錄下的奇怪的現(xiàn)象先貼代碼
......后面還有一大段沒什么關(guān)系就不貼了這段代碼的功能是遍歷當前和子目錄復(fù)制符合條件的doc后綴的文件并進行處理,如果沒有文件被處理就退出,有則繼續(xù)往下運行之前一直運行的好好的,直到把它轉(zhuǎn)移到根目錄下運行后發(fā)現(xiàn)奇怪的現(xiàn)象:msgbox已經(jīng)顯示num的值是比如29,但腳本運行到下一句還是退出了,好像if判斷沒起作用一樣然后我在if語句前加了echo !num!和pause,運行的環(huán)境和剛才一樣都沒變,這次msgbox告訴我num仍然是29,echo回顯也是29,詭異的是,它竟然開始往下運行了!更加詭異的是,去掉后加的echo 和pause,代碼恢復(fù)了原貌,運行卻仍然正常,難道代碼還會玩情緒不成???為了搞個明白,我重啟電腦后,把原先在其他目錄的腳本又復(fù)制了一份到根目錄,再次運行,問題再次出現(xiàn)了!!的確有問題無奈之中,我把上面代碼最后兩句調(diào)換位置,權(quán)且試試看,結(jié)果一次成功!問題是解決了,可是心里的問號去不掉,哪位還遇到過類似狀況,好讓俺整個明白唄nclick="copycode($('code0'));">復(fù)制代碼
- @echo off
- setlocal enabledelayedexpansion
- color 0f
- if not exist backup mkdir backup
- warn.vbs 2 0
- for /r %%a in (*.doc) do (
- set var=%%a
- if defined var goto start
- )
- warn.vbs 1 0
- exit
- :start
- cd. >TEXT
- set num=0
- dir %~dp0backup*.bak 1>nul 2>nul
- set x=!errorlevel!
- for /r %%a in (*.doc) do (
- set y=0
- if %x%==0 (
- call :fileCompare %%a
- if !y!==0 (
- cscript //nologo main.vbs %%a
- copy %%a %~dp0backup!date!-!time:~0,2!-!time:~3,2!-!time:~6,5!.bak 1>nul 2>nul
- set /a num+=1
- cls & echo 已提取 !num! 個文本
- )
- )else(
- cscript //nologo main.vbs %%a
- copy %%a %~dp0backup!date!-!time:~0,2!-!time:~3,2!-!time:~6,5!.bak 1>nul 2>nul
- set /a num+=1
- cls & echo 已提取 !num! 個文本
- )
- )
- quit.vbs
- ::warn.vbs會彈出一個msgbox并顯示含有num的值的文本
- warn.vbs 3 !num!
- if !num!==0 del TEXT 1>nul 2>nul && exit

