1

我知道这是一个常见问题,但我仍然无法弄清楚。批量操作带口音的路径

我有以下批处理脚本,读取存储在文本文件中的路径和文件名,但我不断收到有关误解口音的错误。

@echo off 
CHCP 1252 
FOR /F "tokens=*" %%i IN (names.txt) DO (
    FOR /F "tokens=1,2,3,4 delims=;" %%j IN (paths.txt) DO (
     IF %%i==%%l (
      copy /-Y "%%j" %cd% 
      ren "%%k" "%%l"."%%m" 
     ) 
    ) 
) 

我试图与不CHCP线,编码为UTF-8的每个文件,AINSI,DOS 850,但没有它的工作。

+0

调试提示:使用'@'符号尝试使用'@echo ON'和前缀'CHCP'和所有'FOR'作为'@ CHCP'和'@ FOR'出现,但让'IF'和'copy'出现和'ren'在没有'@'的详细模式下查看真正发生了什么。 (也许在'IF'之前添加'@echo %% i == %% l') – JosefZ

+0

我已经通过删除'@echo off'来看到以前的所有内容,但我仍然无法理解这是如何工作的。假设这个文件是“Détective”(法语),它将从这两个文件(names.txt和paths.txt)中读取“Duttective”,但由于该路径将被损坏,因此以后将无法找到该文件。 – Scentle5S

+0

公然的mojibake案件。阅读[我对类似问题的回答](http://stackoverflow.com/a/31713084/3439404)。使用的CHCP 1252应该与ANSI编码的文件一致。 – JosefZ

回答

1

了解它与CHCP 65001,UTF-8文本文件。必须将控制台字体更改为Lucida Console。