无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 10393|回复: 13
打印 上一主题 下一主题

64位系统批处理问题『已解决』

[复制链接]
跳转到指定楼层
1#
发表于 2010-8-22 21:23:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目的做个只用的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 编辑 ]
2#
发表于 2010-8-23 10:18:17 | 只看该作者
在64为系统下,32位程序如果要访问system32,会被wow64自动重定向到syswow64文件夹中。

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

点评

有个类似楼主的问题,恳请大大帮忙,看能否解决 @echo off echo %PROCESSOR_ARCHITECTURE% pause 这个代码只要打包成自解压在64位系统下运行结果就变成x86,但打包成64位自解压又无法在32位系统运行。  详情 回复 发表于 2013-5-29 11:35
回复

使用道具 举报

3#
 楼主| 发表于 2010-8-23 11:38:48 | 只看该作者
在64为系统下,32位程序如果要访问system32,会被wow64自动重定向到syswow64文件夹中。

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

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

[ 本帖最后由 yjd 于 2010-8-23 11:39 编辑 ]
回复

使用道具 举报

4#
发表于 2010-8-23 12:17:13 | 只看该作者
原帖由 yjd 于 2010-8-23 11:38 发表

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

都可以的

你在64位windows下开一个32位cmd试一下就明白了
回复

使用道具 举报

5#
发表于 2010-8-24 15:57:33 | 只看该作者
感谢!fujianabc我发现您什么都懂啊膜拜^_^
呵呵,说真的,不知道他还有什么不懂?
可能是他记忆存贮体太好了,根本没有坏道!
一目十行,过目不忘!

膜拜^_^
回复

使用道具 举报

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

膜拜^_^

说得相当好,知识全面记忆力也超群,俺是记忆力退化严重昨天的事情今天基本全忘
回复

使用道具 举报

7#
发表于 2012-11-26 23:29:23 | 只看该作者
谢谢楼主,看了楼主的贴子,我只郁闷了一个晚上
回复

使用道具 举报

8#
发表于 2013-5-29 11:35:34 | 只看该作者
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

点评

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

使用道具 举报

9#
发表于 2013-5-29 16:06:09 | 只看该作者
wnsdt 发表于 2013-5-29 11:35
有个类似楼主的问题,恳请大大帮忙,看能否解决

    @echo off


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

如果你想用批处理来判断当前系统是32位还是64位,建议直接通过判断是否存在\windows\syswow64文件夹,存在的是64位系统,不存在的是32位

点评

在正常系统可以使用,但在有些极度精简版64位PE里,没syswow64这个文件夹,还请大师指点一二!  详情 回复 发表于 2013-5-29 16:59
回复

使用道具 举报

10#
发表于 2013-5-29 16:59:40 | 只看该作者
fujianabc 发表于 2013-5-29 16:06
这个因为你是32位exe,调用32位cmd.exe,所以echo %PROCESSOR_ARCHITECTURE%出来的是x86。

如果你想 ...

在正常系统可以使用,但在有些极度精简版64位PE里,没syswow64这个文件夹,还请大师指点一二!

点评

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

使用道具 举报

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

试了一下网上的信息,
echo %PROCESSOR_IDENTIFIER%
参数可以判断,32位系统结果是x86开头
64位系统结果则有64字符串(可能是amd64或者intel64或EMT64),不管是用32位cmd还是64位cmd的结果都是相同的

点评

谢谢F大,问题解决了  详情 回复 发表于 2013-6-6 16:23
老大知识面真是宽广,学习了,前两天搞64位的win8,老是解压到syswow64,后来发现用的是32位的7z,也知道了64位的一些特点。  详情 回复 发表于 2013-5-29 20:11
回复

使用道具 举报

12#
发表于 2013-5-29 20:11:18 | 只看该作者
fujianabc 发表于 2013-5-29 18:05
试了一下网上的信息,
echo %PROCESSOR_IDENTIFIER%
参数可以判断,32位系统结果是x86开头

老大知识面真是宽广,学习了,前两天搞64位的win8,老是解压到syswow64,后来发现用的是32位的7z,也知道了64位的一些特点。
回复

使用道具 举报

13#
发表于 2013-6-6 16:23:03 | 只看该作者
fujianabc 发表于 2013-5-29 18:05
试了一下网上的信息,
echo %PROCESSOR_IDENTIFIER%
参数可以判断,32位系统结果是x86开头

谢谢F大,问题解决了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-12-1 00:00

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表