奇怪Windows 10 批处理兼容性问题
Weird Windows 10 batch compatability issue
我刚刚升级了Windows10。但是我写的批处理文件不能完全工作。相同的编码与 Windows 7 一起使用。这就是这段代码。
:BASLA
SETLOCAL ENABLEDELAYEDEXPANSION
set "s=DIR D:\Diziler /S /Q ^|FIND /i "Administrators" ^|findstr /m /i "HDTV" ^|findstr /m /i "\.mkv$""
for /f "Tokens=5,6*" %%f in ('%s%') do (
set FULLNAME=%%f
set ENDTEXT=!FULLNAME:*0p=!
call set TRIMMEDNAME=%%FULLNAME:!ENDTEXT!=%%
for /r D:\Diziler\ %%g in (*) do echo %%~nxg >> %tmp%\altyazi.txt
>nul findstr /c:"!FULLNAME:~0,-4!.srt" %tmp%\altyazi.txt && (
>>%tmp%\list.txt echo !TRIMMEDNAME!*
) || (
>>%tmp%\list.txt echo !TRIMMEDNAME!
)
)
)
第一部分照常进行。 altyazi.txt 给出正确的输出。但是当它出现时 list.txt 所有输出都是 Echo 关闭。我从未见过这样的事情。适用于 7,但不适用于 10。
Windows 10 和 Windows 7 在 DIR 列表时给出不同的列。更改令牌将解决问题。
我刚刚升级了Windows10。但是我写的批处理文件不能完全工作。相同的编码与 Windows 7 一起使用。这就是这段代码。
:BASLA
SETLOCAL ENABLEDELAYEDEXPANSION
set "s=DIR D:\Diziler /S /Q ^|FIND /i "Administrators" ^|findstr /m /i "HDTV" ^|findstr /m /i "\.mkv$""
for /f "Tokens=5,6*" %%f in ('%s%') do (
set FULLNAME=%%f
set ENDTEXT=!FULLNAME:*0p=!
call set TRIMMEDNAME=%%FULLNAME:!ENDTEXT!=%%
for /r D:\Diziler\ %%g in (*) do echo %%~nxg >> %tmp%\altyazi.txt
>nul findstr /c:"!FULLNAME:~0,-4!.srt" %tmp%\altyazi.txt && (
>>%tmp%\list.txt echo !TRIMMEDNAME!*
) || (
>>%tmp%\list.txt echo !TRIMMEDNAME!
)
)
)
第一部分照常进行。 altyazi.txt 给出正确的输出。但是当它出现时 list.txt 所有输出都是 Echo 关闭。我从未见过这样的事情。适用于 7,但不适用于 10。
Windows 10 和 Windows 7 在 DIR 列表时给出不同的列。更改令牌将解决问题。