2015-11-18 20 views
0

我想製作一個程序,它將取消隱藏USB中的文件夾。 有時當有病毒的電腦,所有的數據獲取文件夾名「「(ASCII空格)隱藏,具有屬性系統和Hidden.When我鍵入命令不能在批處理文件中使用ascii空間

attrib " " -h -s 

在cmd中,它撤消隱藏和系統屬性,但是當我使用bat文件鍵入相同的命令,它示出了錯誤

G:\>attrib "á" +h +s 
File not found - á 
+1

顯然你鍵入的東西不是ASCII空間。無論如何,它不是一個文件/目錄的有效名稱,所以也許你不能通過批處理文件修復它? – wOxxOm

+0

它是有效的,你可以在重命名文件時嘗試alt + 0160。 –

+1

這是一個不同的字符:具有不同代碼的不間斷空間不是ASCII空間(0x20或32)。 – wOxxOm

回答

2

公然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空間。

no-break space

+0

現在我該如何解決這個問題?如何使用適當的代碼頁來運行腳本? –

+0

@JatinAsija請在我的回答中注意'chcp'命令。也許'chcp 1252'然後'script.bat'。也許(不知道)'chcp 1252&script.bat' ... – JosefZ

+0

非常感謝人:) –