始终使用/u启动批处理文件?

3
我最近读到,使用/u标志启动cmd.exe会使其以Unicode格式输出文件,但是我该如何像这样启动批处理文件呢?澄清一下,我的意思不是从已经运行的批处理文件中启动其他批处理文件,而是单击批处理文件,它自动以/u运行。由于使用/u启动批处理文件的目的是以Unicode格式输出文件,因此我正在寻找一种在代码中实现此操作或始终使用标志启动批处理文件的方法,但这是不可能的。另一个解决方案可以是在代码中检测/u是否打开,如果关闭,则可以执行start /u this.bat

我不确定,但是你不能右键单击批处理文件并查看是否有选项/设置,可以指定运行参数吗?您还可以在目标中使用“/u”标志创建指向批处理文件的快捷方式。 - Cyclonecode
@KristerAndersson 我不能做第一件事,但我知道你可以为它制作一个快捷方式,我试图避免这样做,而是要有一个独立的批处理文件。 - Oztaco
https://dev59.com/ylvUa4cB1Zd3GeqPqin2 - Cyclonecode
我无法创建快捷方式,我正在尝试弄清楚的是是否有一种替代方案可以在代码中输出Unicode,我将编辑问题以使其更清晰。 - Oztaco
2个回答

3
如何呢?
start "UNICODE" cmd /u

将这一行代码放入批处理文件中,然后在桌面上添加链接(甚至包括该批处理文件本身)。之后,您只需双击即可运行。
编辑:经过和狗狗漫长的散步后,我认为这并没有帮助到你。但也许下面这个可以帮到你:
if "%1" == "/unicode" goto begin
start "Unicode-Window" cmd /u /k "%~dpf0 /unicode %1 %2 %3 %4 %5 %6 %7 %8 %9"
exit 
:begin
shift

rem start of my batchfilever
echo %1 %2 %3 %4 %5 %6 %7 %8 %9

这个想法是这样的:我不知道这个窗口是否是通过/u启动的,但我不在乎。 我只需在一个新窗口中启动相同的文件(%~dpf0),该窗口已经使用/u启动,并关闭当前窗口。当然,这将意味着一个无限循环,我通过额外的参数/unicode来避免这种情况。 第二次运行检测到该参数(必须是第一个参数)并删除它(shift)。 将此“标题”(直到rem行)添加到您的批处理文件中即可。

这正是我一直在寻找的,唯一需要更改的是 %~dpf0 改为 %0,因为出于某种原因它没有起作用,谢谢。 - Oztaco

1
如果您想修改所有批处理文件的运行方式,您需要修改Windows注册表。
将键HKEY_CLASSES_ROOT\batfile\shell\open\command(默认值)的值更改为:
"%1" %*

"cmd /U /C %1" %*

谢谢,但我需要将其限制在批处理文件中,因为我的计算机不是唯一运行它的计算机,我无法在其他计算机上更改它。 - Oztaco
@leaf68 一个批处理文件无法在启动后反向修改其启动方式,除非它从脚本内部重新启动自己。更改代码页(chcp 65001)对您有用吗? - Ansgar Wiechers
重新启动本身是正常的,chcp 65001 只是改变 CMD 显示的编码,还是会改变文件输出吗? - Oztaco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接