dasgespenst
22-06-2015, 22:09
Делаю маленький скриптик для подготовки к бекапу. Только вот поведение этого скриптика совершенно неадекватное.
FOR /r %%A in ("*") DO (
set MYFILE=%%A
echo %MYFILE%| findstr /I /R "Txt$"
If %ERRORLEVEL% EQU 0 echo txt exist
echo %MYFILE%| findstr /I /R "Cmd$"
If %ERRORLEVEL% EQU 0 echo cmd exist
)
Внутри папки файлы archive.cmd и новый текстовой документ.txt
C:\archive>archive.cmd
C:\archive>FOR /R %A in ("*") DO (
set MYFILE=%A
echo | findstr /I /R "Txt$"
If 0 EQU 0 echo txt exist
echo | findstr /I /R "Cmd$"
If 0 EQU 0 echo cmd exist
)
C:\archive>(
set MYFILE=C:\archive\archive.cmd
echo | findstr /I /R "Txt$"
If 0 EQU 0 echo txt exist
echo | findstr /I /R "Cmd$"
If 0 EQU 0 echo cmd exist
)
txt exist
cmd exist
C:\archive>(
set MYFILE=C:\archive\Новый текстовый документ.txt
echo | findstr /I /R "Txt$"
If 0 EQU 0 echo txt exist
echo | findstr /I /R "Cmd$"
If 0 EQU 0 echo cmd exist
)
txt exist
cmd exist
C:\archive>archive.cmd
C:\archive>FOR /R %A in ("*") DO (
set MYFILE=%A
echo C:\archive\Новый текстовый документ.txt | findstr /I /R "Txt$"
If 1 EQU 0 echo txt exist
echo C:\archive\Новый текстовый документ.txt | findstr /I /R "Cmd$"
If 1 EQU 0 echo cmd exist
)
C:\archive>(
set MYFILE=C:\archive\archive.cmd
echo C:\archive\Новый текстовый документ.txt | findstr /I /R "Txt$"
If 1 EQU 0 echo txt exist
echo C:\archive\Новый текстовый документ.txt | findstr /I /R "Cmd$"
If 1 EQU 0 echo cmd exist
)
C:\archive\Новый текстовый документ.txt
C:\archive>(
set MYFILE=C:\archive\Новый текстовый документ.txt
echo C:\archive\Новый текстовый документ.txt | findstr /I /R "Txt$"
If 1 EQU 0 echo txt exist
echo C:\archive\Новый текстовый документ.txt | findstr /I /R "Cmd$"
If 1 EQU 0 echo cmd exist
)
C:\archive\Новый текстовый документ.txt
C:\archive>
Вот так вот получаю два совершенно неадекватных, притом разных выхлопа. Откуда такое странное поведение?
FOR /r %%A in ("*") DO (
set MYFILE=%%A
echo %MYFILE%| findstr /I /R "Txt$"
If %ERRORLEVEL% EQU 0 echo txt exist
echo %MYFILE%| findstr /I /R "Cmd$"
If %ERRORLEVEL% EQU 0 echo cmd exist
)
Внутри папки файлы archive.cmd и новый текстовой документ.txt
C:\archive>archive.cmd
C:\archive>FOR /R %A in ("*") DO (
set MYFILE=%A
echo | findstr /I /R "Txt$"
If 0 EQU 0 echo txt exist
echo | findstr /I /R "Cmd$"
If 0 EQU 0 echo cmd exist
)
C:\archive>(
set MYFILE=C:\archive\archive.cmd
echo | findstr /I /R "Txt$"
If 0 EQU 0 echo txt exist
echo | findstr /I /R "Cmd$"
If 0 EQU 0 echo cmd exist
)
txt exist
cmd exist
C:\archive>(
set MYFILE=C:\archive\Новый текстовый документ.txt
echo | findstr /I /R "Txt$"
If 0 EQU 0 echo txt exist
echo | findstr /I /R "Cmd$"
If 0 EQU 0 echo cmd exist
)
txt exist
cmd exist
C:\archive>archive.cmd
C:\archive>FOR /R %A in ("*") DO (
set MYFILE=%A
echo C:\archive\Новый текстовый документ.txt | findstr /I /R "Txt$"
If 1 EQU 0 echo txt exist
echo C:\archive\Новый текстовый документ.txt | findstr /I /R "Cmd$"
If 1 EQU 0 echo cmd exist
)
C:\archive>(
set MYFILE=C:\archive\archive.cmd
echo C:\archive\Новый текстовый документ.txt | findstr /I /R "Txt$"
If 1 EQU 0 echo txt exist
echo C:\archive\Новый текстовый документ.txt | findstr /I /R "Cmd$"
If 1 EQU 0 echo cmd exist
)
C:\archive\Новый текстовый документ.txt
C:\archive>(
set MYFILE=C:\archive\Новый текстовый документ.txt
echo C:\archive\Новый текстовый документ.txt | findstr /I /R "Txt$"
If 1 EQU 0 echo txt exist
echo C:\archive\Новый текстовый документ.txt | findstr /I /R "Cmd$"
If 1 EQU 0 echo cmd exist
)
C:\archive\Новый текстовый документ.txt
C:\archive>
Вот так вот получаю два совершенно неадекватных, притом разных выхлопа. Откуда такое странное поведение?