我想要拖放文件夾/文件將其子文件夾的所有目錄/文件和文件遞歸地打印到文件中。使用批處理,如何將unicode寫入文件?
@echo off
REM chcp 1250
REM chcp 65001
if [%1]==[] goto :eof
:loop
echo %1 >> aText.txt
for /f "tokens=* delims=" %%a in ('dir %1 /s /b') do (
echo %%a >> aText.txt
)
shift
if not [%1]==[] goto loop
aText.txt
@pause
而且工作正常,但它不支持Unicode文件名。如果我將bat文件本身保存在UTF-8或Unicode下,它也不起作用。 我看了這個:Unicode characters in Windows command line - how?
但是這並不能使它工作。我的猜測是,chcp使得可以在批處理文件中寫入unicode,而不是在它創建的文件中使用unicode。 如何將unicode文件名寫入到它創建的文件中?
編輯:
要重新短語我的問題更準確。我想寫這個unicode是由瀏覽器可讀(例如鉻大部分) 我現在是這樣的:
@echo off
chcp 65001
if [%1]==[] goto :eof
:loop
echo %1 > aText.txt
for /f "tokens=* delims=" %%a in ('dir %1 /s /b') do (
echo ^<br^>^<img src='%%a'^> >> aText.txt
REM echo %%a >> aText.txt
)
shift
if not [%1]==[] goto loop
aText.txt
@pause
所以我在記事本中打開此,它顯示unicode的,無一不精。 (正如MC ND描述了答案) 這給了我:
D:\Downloads\unicodes
<br><img src='D:\Downloads\unicodes\sdsdsd.html'>
<br><img src='D:\Downloads\unicodes\ŽŽŽŽŽ.png'>
<br><img src='D:\Downloads\unicodes\中文.png'>
<br><img src='D:\Downloads\unicodes\文言.png'>
<br><img src='D:\Downloads\unicodes\日本語.png'>
<br><img src='D:\Downloads\unicodes\日本語.txt'>
<br><img src='D:\Downloads\unicodes\粵語.png'>
<br><img src='D:\Downloads\unicodes\한국어.png'>
然而,當我打開這個使用Chrome它得到:
D:\Downloads\unicodes
<br><img src='D:\Downloads\unicodes\sdsdsd - Kopie.txt'>
<br><img src='D:\Downloads\unicodes\sdsdsd.html'>
<br><img src='D:\Downloads\unicodes\ŽŽŽŽŽ.png'>
<br><img src='D:\Downloads\unicodes\ä¸æ–‡.png'>
<br><img src='D:\Downloads\unicodes\文言.png'>
<br><img src='D:\Downloads\unicodes\日本語.png'>
<br><img src='D:\Downloads\unicodes\日本語.txt'>
<br><img src='D:\Downloads\unicodes\粵語.png'>
<br><img src='D:\Downloads\unicodes\í•œêµì–´.png'>
很明顯,當我txt文件重命名爲一個html文件,即使對於png文件,也只有一堆破碎的圖像。
當我手動打開記事本中的txt並重新保存不同的名稱下的txt文件,甚至不改變任何設置編碼(UTF-8),所有工作正常,因爲我想要它,但我需要擺脫這種手動保存。
隨着npocmaka的CM \ü解決方案我正在用空格東西其間的每一個字符,不幸的是我突然似乎不能夠努力白白繞後重現此,而是這個現在:
@echo off
chcp 65001
cmd /u /c for /f "tokens=* delims=" %%a in ('dir %1 /s /b') do (echo %%a >> aText.txt)
aText.txt
我得到
D:\Downloads>(echo D:\Downloads\unicodes\sdsdsd.html )
D:\Downloads\unicodes\sdsdsd.html
D:\Downloads>(echo D:\Downloads\unicodes\ŽŽŽŽŽ.png )
D:\Downloads\unicodes\ŽŽŽŽŽ.png
D:\Downloads>(echo D:\Downloads\unicodes\中文.png )
D:\Downloads\unicodes\中文.png
D:\Downloads>(echo D:\Downloads\unicodes\文言.png )
D:\Downloads\unicodes\文言.png
D:\Downloads>(echo D:\Downloads\unicodes\日本語.png )
D:\Downloads\unicodes\日本語.png
D:\Downloads>(echo D:\Downloads\unicodes\日本語.txt )
D:\Downloads\unicodes\日本語.txt
D:\Downloads>(echo D:\Downloads\unicodes\粵語.png )
D:\Downloads\unicodes\粵語.png
D:\Downloads>(echo D:\Downloads\unicodes\한국어.png )
D:\Downloads\unicodes\한국어.png
,其雙線路輸出,儘管本身呼應關是怪異的我,但無論如何,在記事本中的Unicode filesnames顯示,但鉻不想甚至要打開TXT,並將擴展名重命名爲html牛逼顯示爲 「垃圾」,如下所示:
D:\Downloads>(echo D:\Downloads\unicodes\sdsdsd.html) D:\Downloads\unicodes\sdsdsd.html D:\Downloads>(echo D:\Downloads\unicodes\}}}}}.png) D:\Downloads\unicodes\}}}}}.png D:\Downloads>(echo D:\Downloads\unicodes\-N‡e.png) D:\Downloads\unicodes\-N‡e.png D:\Downloads>(echo D:\Downloads\unicodes\‡eŠ.png) D:\Downloads\unicodes\‡eŠ.png D:\Downloads>(echo D:\Downloads\unicodes\åe,gžŠ.png) D:\Downloads\unicodes\åe,gžŠ.png D:\Downloads>(echo D:\Downloads\unicodes\åe,gžŠ.txt) D:\Downloads\unicodes\åe,gžŠ.txt D:\Downloads>(echo D:\Downloads\unicodes\µ|žŠ.png) D:\Downloads\unicodes\µ|žŠ.png D:\Downloads>(echo D:\Downloads\unicodes\\Õm´Å.png) D:\Downloads\unicodes\\Õm´Å.png
這不是我所需要...
假設你在'chcp 65001'之前沒有使用'rem',確實,它不起作用?你得到了什麼?你應該得到什麼? –
'cmd/u/c for/f「tokens = * delims =」%% a in('dir%1/s/b')do echo %% a)' - ? – npocmaka
@MC ND它寫了一些不可讀的混亂:D:\ Downloads \ unicode D:\ Downloads \ unicode \ sdsdsd.txt D:\ Downloads \ unicode \ŽŽŽŽŽŽ.png D:\ Downloads \ unicode \ä¸æ- ‡.png D:\ Downloads \ unicode \æ-‡è¨.png D:\ Downloads \ unicode \æ-¥æœ¬èªž.png D:\ Downloads \ unicode \æ-¥æœ¬èªž。 txt D:\ Downloads \ unicode \ç²μ語.png D:\ Downloads \ unicode \œêœìμì-'.png 我甚至試過寫一個圖片標籤並在html中顯示img標籤內的圖片,但我也只能得到破碎的圖像符號,所以它可能不僅僅是一個顯示問題。 – kumoyadori