CMD可否传递unicode参数?
dwing吧
全部回复
仅看楼主
level 1
zeas2 楼主
我要批处理一个文件夹下的文件,但该死的文件都有个特殊字符“・”,在GBK下统统变成了“?”,传给程序就直接报告找不到文件
在属性里改代码页为932后就干脆连文件名都显示不了,但我又实在不想换语言属性
所以我现在的解决方案是将原文件批量重命名成“*_点啊点_*”转换后再重命名回来
然后我开始忖度着怎么让CLI程序支持用unicode传递参数……
CMD就真的没法用unicode传递参数么?

2010年05月25日 04点05分 1
level 13
console程序改用unicode版的文件访问API, 如 _wfopen, CreateFileW
命令行不需要修改代码页
2010年05月25日 05点05分 2
level 13
文件名虽然无法直接输入,但用粘贴,tab,for枚举等方法都可以输入,显示出来的是个空格.
2010年05月25日 05点05分 3
level 1
zeas2 楼主
那在argv[]里的还是ansi啊
2010年05月25日 05点05分 4
level 1
zeas2 楼主
OTL
难道要自己用GetCommandLineW?
2010年05月25日 05点05分 5
level 9
定义一个这样的程序入口就可以实现
void Entry()
{
    int argc;
    wchar_t **argv;
    argv = CommandLineToArgvW(GetCommandLineW(), &argc);
    main(argc, argv);
    ExitProcess(0);
}
然后你可以照样写你的main函数
int main(int argc, wchar_t **argv)
2010年05月25日 05点05分 6
level 1
zeas2 楼主
谢楼上们的回答~
2010年05月25日 06点05分 7
level 13
unicode版入口的原型是这样:
int wmain(int argc, wchar_t** argv);
2010年05月25日 07点05分 8
level 0
看看cmd的/u参数
2010年05月25日 09点05分 9
level 0
CMD支持UTF-16LE(带BOM)尚可,但UTF-8就不行了。
https://tieba.baidu.com/f?kz=486870101
2010年05月25日 09点05分 10
level 0
2010年05月25日 09点05分 11
level 1
2016年01月03日 03点01分 12
1