フォルダー/ファイルをドラッグアンドドロップして、すべてのディレクトリ/ファイルとそのサブフォルダーのファイルを再帰的にファイルに出力したい。
@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 ファイル名をサポートしていません。UTF-8またはUnicodeでbatファイル自体を保存しても機能しません。私はこれを見てきました: WindowsコマンドラインのUnicode文字 - どのように?
しかし、これではうまくいきません。私の推測では、chcp を使用すると、バッチ ファイルに Unicode を書き込むことができますが、作成するファイルには Unicode を書き込むことができません。Unicode ファイル名を作成するファイルに書き込むにはどうすればよいですか?
編集:
私の質問をより正確に言い直すために。このユニコードをブラウザ(主にChromeなど)で読み取れるように記述したいのですが、今持っているのは次のとおりです。
@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 \u ソリューションでは、各文字の間にスペースがあるものを取得していましたが、残念ながら、無駄に試した後、突然これを再現できないようで、代わりにこれを使用しました:
@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
エコーがオフになっているにもかかわらず、その二重行出力自体は私にとって奇妙ですが、とにかく、メモ帳ではユニコードファイル名が表示されますが、クロムは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
これは私が必要としているものではありません...