我想拖放文件夹/文件将其子文件夹的所有目录/文件和文件递归打印到文件中。
@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 下,它也不起作用。我看过这个:Windows命令行中的Unicode字符 - 如何?
但这并不能使它起作用。我的猜测是,chcp 可以在批处理文件中写入 unicode,而不是在它创建的文件中写入 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
尽管回显本身关闭,但其双行输出对我来说很奇怪,但无论如何,在记事本中显示了 unicode 文件名,但 chrome 甚至不想打开 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
这不是我需要的...