无忧启动论坛

标题: 64位系统批处理问题『已解决』 [打印本页]

作者: yjd    时间: 2010-8-22 21:23
标题: 64位系统批处理问题『已解决』
目的做个只用的winrar自解压绿色版输入法。
几条代码

  1. set w64=%systemroot%\syswow64
  2. set w32=%systemroot%\system32
  3. if EXIST %w64%\QQPinyin.ime goto _vren
  4. : _vren
  5. ren %w32%\QQPinyin.ime QQPinyin_%name%_old_bak.ime
  6. ren %w64%\QQPinyin.ime QQPinyin_%name%_old_bak.ime
复制代码
以上代码手动运行结果是
  1. ren %systemroot%\syswow64\QQPinyin.ime QQPinyin_%name%_old_bak.ime
  2. ren %systemroot%\system32\QQPinyin.ime QQPinyin_%name%_old_bak.ime
复制代码
改2个地方的文件。

但是用批处理工具bat to exe一打包生成的是32位程序。
(win7 64位系统只要遇上32位程序路径是windows\system32就会替换成windows\syswow64)变成这样
  1. ren %systemroot%\syswow64\QQPinyin.ime QQPinyin_%name%_old_bak.ime
  2. ren %systemroot%\syswow64\QQPinyin.ime QQPinyin_%name%_old_bak.ime
复制代码
导致没修改到%systemroot%\system32\QQPinyin.ime

虽然后来变相采用winrar 打包成64位自解压包解决这个问题不过被郁闷了2个晚上。大家有什么更好的方法?

测试过vbs调用cmd由于uac开着以管理员运行竟然不起作用。


[ 本帖最后由 yjd 于 2010-8-24 00:51 编辑 ]
作者: fujianabc    时间: 2010-8-23 10:18
在64为系统下,32位程序如果要访问system32,会被wow64自动重定向到syswow64文件夹中。

如果一定要用32位程序访问system32文件夹,请用c:\windows\sysnative
作者: yjd    时间: 2010-8-23 11:38
在64为系统下,32位程序如果要访问system32,会被wow64自动重定向到syswow64文件夹中。

如果一定要用32位程序访问system32文件夹,请用c:\windows\sysnative

感谢!fujianabc我发现您什么都懂啊膜拜^_^
请问这个要用绝对路径还是可以用%systemroot%\sysnative ?
只能晚上到家才可以试了。

[ 本帖最后由 yjd 于 2010-8-23 11:39 编辑 ]
作者: fujianabc    时间: 2010-8-23 12:17
原帖由 yjd 于 2010-8-23 11:38 发表

感谢!fujianabc我发现您什么都懂啊膜拜^_^
请问这个要用绝对路径还是可以用%systemroot%\sysnative ?
只能晚上到家才可以试了。

都可以的

你在64位windows下开一个32位cmd试一下就明白了
作者: coolg    时间: 2010-8-24 15:57
感谢!fujianabc我发现您什么都懂啊膜拜^_^
呵呵,说真的,不知道他还有什么不懂?
可能是他记忆存贮体太好了,根本没有坏道!
一目十行,过目不忘!

膜拜^_^
作者: yjd    时间: 2010-8-24 16:25
感谢!fujianabc我发现您什么都懂啊膜拜^_^
呵呵,说真的,不知道他还有什么不懂?
可能是他记忆存贮体太好了,根本没有坏道!
一目十行,过目不忘!

膜拜^_^

说得相当好,知识全面记忆力也超群,俺是记忆力退化严重昨天的事情今天基本全忘
作者: lomey    时间: 2012-11-26 23:29
谢谢楼主,看了楼主的贴子,我只郁闷了一个晚上
作者: wnsdt    时间: 2013-5-29 11:35
fujianabc 发表于 2010-8-23 10:18
在64为系统下,32位程序如果要访问system32,会被wow64自动重定向到syswow64文件夹中。

如果一定要用32位 ...

有个类似楼主的问题,恳请大大帮忙,看能否解决

    @echo off
echo %PROCESSOR_ARCHITECTURE%
pause

这个代码只要打包成自解压在64位系统下运行结果就变成x86,但打包成64位自解压又无法在32位系统运行。

有否其他的办法,再次感谢

如果你是64位系统,直接运行bat,正确的结果是AMD64,但是转译成exe后,在64位系统下运行结果却是错误的x86
作者: fujianabc    时间: 2013-5-29 16:06
wnsdt 发表于 2013-5-29 11:35
有个类似楼主的问题,恳请大大帮忙,看能否解决

    @echo off


这个因为你是32位exe,调用32位cmd.exe,所以echo %PROCESSOR_ARCHITECTURE%出来的是x86。

如果你想用批处理来判断当前系统是32位还是64位,建议直接通过判断是否存在\windows\syswow64文件夹,存在的是64位系统,不存在的是32位
作者: 2011xiaobing    时间: 2013-5-29 16:59
fujianabc 发表于 2013-5-29 16:06
这个因为你是32位exe,调用32位cmd.exe,所以echo %PROCESSOR_ARCHITECTURE%出来的是x86。

如果你想 ...

在正常系统可以使用,但在有些极度精简版64位PE里,没syswow64这个文件夹,还请大师指点一二!
作者: fujianabc    时间: 2013-5-29 18:05
2011xiaobing 发表于 2013-5-29 16:59
在正常系统可以使用,但在有些极度精简版64位PE里,没syswow64这个文件夹,还请大师指点一二!

试了一下网上的信息,
echo %PROCESSOR_IDENTIFIER%
参数可以判断,32位系统结果是x86开头
64位系统结果则有64字符串(可能是amd64或者intel64或EMT64),不管是用32位cmd还是64位cmd的结果都是相同的
作者: hhh333    时间: 2013-5-29 20:11
fujianabc 发表于 2013-5-29 18:05
试了一下网上的信息,
echo %PROCESSOR_IDENTIFIER%
参数可以判断,32位系统结果是x86开头

老大知识面真是宽广,学习了,前两天搞64位的win8,老是解压到syswow64,后来发现用的是32位的7z,也知道了64位的一些特点。
作者: 2011xiaobing    时间: 2013-6-6 16:23
fujianabc 发表于 2013-5-29 18:05
试了一下网上的信息,
echo %PROCESSOR_IDENTIFIER%
参数可以判断,32位系统结果是x86开头

谢谢F大,问题解决了




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3