我想用批量打開目錄及其子目錄中的隨機文件。而且我知道在stackoverflow上有足夠的問題給誰提供代碼,但我發現沒有一個是使用utf-8字符支持的。批量挑選名稱中包含utf-8個字符的隨機文件
我使用下面的代碼,我發現在stackoverflow。
@echo off
setlocal
:: Create numbered list of files in a temporary file
set "tempFile=%temp%\%~nx0_fileList_%time::=.%.txt"
dir /b /s /a-d %1 | findstr /n "^" >"%tempFile%"
:: Count the files
for /f %%N in ('type "%tempFile%" ^| find /c /v ""') do set cnt=%%N
call :openRandomFile
:: Delete the temp file
del "%tempFile%"
exit /b
:openRandomFile
set /a "randomNum=(%random% %% cnt) + 1"
for /f "tokens=1* delims=:" %%A in (
'findstr "^%randomNum%:" "%tempFile%"'
) do start "" "%%B"
cmd /k
它工作正常,這樣一來,直到它像挑選「blablabla_空色デイズ.MP3」,在這種情況下,它給像「文件blablabla錯誤_ ?????。MP3找不到文件「。我有幾十個這樣的文件。
我已經嘗試在使用utf-8的文件的開始處使用chcp 65001
,如果我這樣做了,teporary創建的.txt列表顯示日文文件的正確名稱,但拾取本身不再工作後那麼,我拿走了@echo off
,cmd在set /a "randomNum=(%random% %% cnt) + 1"
上輸出錯誤:錯誤:除以零。
在這一點上,我不明白髮生了什麼,因爲該文件運行良好,沒有chcp 65001
。 我不知道批次,請問有沒有人有一個想法如何使它運行? 我會很開心!
我從昨天開始坐在這裏,終於和所有人一起工作,非常感謝! – sunnlo