Controlling codepages in a cmd window when running batch scripts

痞子三分冷 提交于 2020-01-07 04:17:47

问题


I have problems controlling character code pages in a Windows cmd window, or rather in DOS scripts (.bat files) I use for certain tasks on my Windows 7 office computer.

Here is the problem:

One of my scripts is used to open certain files in their respective programmes, e.g.

C:\Stuff\Büroeinrichtung\MyFile.xlsx

The crucial thing here is the u-umlaut (ü) in the directory name.

In my script I use

Start "" "C:\Stuff\Büroeinrichtung\MyFile.xlsx"

to start Excel and open the file.

This works as long as I tell my text editor (Notepad++) to encode the script using codepage 850 (Western European), as this is what the cmd windows on my machine use by default.

However, I want to be able to use scripts that are encoded in something else, primarily UTF-8 or UTF-8-BOM. From answers to another question posted here I learned that principally I can set a command in the script for the cmd window to change the codepage, e.g. chcp 65001 for UTF-8. So my script would then look like

chcp 65001
pause      :: this is here just to have some visual control while testing
Start "" "C:\Stuff\Büroeinrichtung\MyFile.xlsx"
pause      :: dito

But: whatever I do, I do not get this running. The cmd window nicely accepts the change to the codepage, then stops due to pause (in Line 2), but on hitting "enter" to continue I

  • either get an alert that something is wrong with the ü (other, fancy, characters displayed), or
  • I get an alert that a directory of that name wasn't found (again obviously something wrong with the ü the actual bits of which seem to respresent something else) or
  • the cmd window just disappears (apparently crashed, and apparently never reaching Line 4 where a new pause would halt it).

I tried all possible combinations of codepages called in the script and various encodings for the script file (.bat) itself but did not get anywhere.

So, to put the long story short: What do I have to do, in a script encoded in UTF-8 (or so) and going to be run on a machine using codepage 850 by default that a character ü (u-umlaut) in a directory name is to be understood in the script as exactly ü, nothing else?

来源:https://stackoverflow.com/questions/44286684/controlling-codepages-in-a-cmd-window-when-running-batch-scripts

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!