我想製作一個程序,它將取消隱藏USB中的文件夾。 有時當有病毒的電腦,所有的數據獲取文件夾名「「(ASCII空格)隱藏,具有屬性系統和Hidden.When我鍵入命令不能在批處理文件中使用ascii空間
attrib " " -h -s
在cmd中,它撤消隱藏和系統屬性,但是當我使用bat文件鍵入相同的命令,它示出了錯誤
G:\>attrib "á" +h +s
File not found - á
我想製作一個程序,它將取消隱藏USB中的文件夾。 有時當有病毒的電腦,所有的數據獲取文件夾名「「(ASCII空格)隱藏,具有屬性系統和Hidden.When我鍵入命令不能在批處理文件中使用ascii空間
attrib " " -h -s
在cmd中,它撤消隱藏和系統屬性,但是當我使用bat文件鍵入相同的命令,它示出了錯誤
G:\>attrib "á" +h +s
File not found - á
公然mojibake情況。 證明:重現該問題,複製&粘貼下面的代碼片段成開放cmd
窗口(而不是一個批處理文件):
echo OFF
chcp 1250
echo(dir /B /S /A " ">33782406.bat
33782406.bat
echo no-break space 0xA0 = Alt+0160>" "
type 33782406.bat
33782406.bat
chcp 852
type 33782406.bat
33782406.bat
echo ON
輸出:
==> echo OFF
chcp 1250
Active code page: 1250
echo(dir /B /S /A " ">33782406.bat
33782406.bat
File Not Found
echo no-break space 0xA0 = Alt+0160>" "
type 33782406.bat
dir /B /S /A " "
33782406.bat
D:\bat\UnASCII Names\
chcp 852
Active code page: 852
type 33782406.bat
dir /B /S /A "á"
33782406.bat
File Not Found
echo ON
==>
結論:使用適當的代碼頁(字符集)運行腳本,與保存的批處理文件編碼相同(Windows Notepad的ANSI
comp與例如或CP1252
,具體取決於您的區域設置,另請參閱charmap
工具)。
下一張圖說明從您的原始代碼行復制的" "
不是ASCII空間。
現在我該如何解決這個問題?如何使用適當的代碼頁來運行腳本? –
@JatinAsija請在我的回答中注意'chcp'命令。也許'chcp 1252'然後'script.bat'。也許(不知道)'chcp 1252&script.bat' ... – JosefZ
非常感謝人:) –
顯然你鍵入的東西不是ASCII空間。無論如何,它不是一個文件/目錄的有效名稱,所以也許你不能通過批處理文件修復它? – wOxxOm
它是有效的,你可以在重命名文件時嘗試alt + 0160。 –
這是一個不同的字符:具有不同代碼的不間斷空間不是ASCII空間(0x20或32)。 – wOxxOm