
兩個相同bat執行結果不同最后由 tiandyoin 于 -10-1 15:06今天遇到一靈異事件,兩個相同的bat(用beyondcompare比較過),其中一個 2.bat 運行后,出現語法錯誤,并且把目錄下的所有文件全刪除了。。。起初懷疑是 endlocal 的反常用法,但是修改掉,注釋掉,都還是有問題。。下面是運行結果
- C:Desktopdos>2.bat
- 'se' 不是內部或外部命令,也不是可運行的程序
- 或批處理文件。
- p10=
- 系統找不到指定的路徑。
- 找不到批處理文件。
- 找不到批處理文件。
nclick="copycode($('code0'));">復制代碼
下面是代碼,直接拷貝不能看到效果,要從網盤下載的來測試。
- @echo off
- cd /d %~dp0
- call :test1
- @goto :EOF
- :test1
- set /p p10=p10=&rem a><b
- set /p p20=p20=&rem a><b c>|d
- set $=%TEMP%$
- >nul 2>nul del /f /q %$%
- setlocal EnableDelayedExpansion
- set p10=!p10!
- cd.&call :Strstr p20 p10 head len
- echo errorlevel=%errorlevel%
- echo head=!head!
- if !head!==0 (
- echo test2
- ) else set head=&rem
- if defined head (echo test3 & (echo.!p20:~%head%!)>!$!) else echo test4
- endlocal
- if exist %$% set /p p20=<%$%
- @set p20&pause
- @goto :EOF
- @rem Usage:
- rem功能: 查找子串 s2 在字符串 s1 中的位置。
- :Strstr <&s1, &s2, &s1.Location, &s2.Length>
- @if %~1%~1== exit /b 1
- @if %~2%~2== exit /b 1
- @if %~3%~3== exit /b 1
- @if %~4%~4== exit /b 1
- set %~3=&rem
- set %~4=&rem
- setlocal EnableDelayedExpansion
- set i=-1
- :Loop_i
- set /a i+=1
- set j=-1
- :Loop_j
- set /a j+=1
- set /a k=!i!+!j!
- call set $1=%%%~1:~!k!,1%%
- call set $2=%%%~2:~!j!,1%%
- if defined $1 if defined $2 (
- @if /i not !$1!!$1!==!$2!!$2! goto :Loop_i
- )
- if not defined $2 (
- endlocal & set %~3=%i% & set %~4=%j%
- @set %~3&set %~4&pause
- @exit /b 0
- )
- @if not defined $1 exit /b 1
- @goto :Loop_j
- @exit /b 0
nclick="copycode($('code1'));">復制代碼
鏈接:https://pan.baidu.com/s/1AOse72_L49su7VFAclEFgA?pwd=tc98 提取碼:tc98