无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站数据恢复、数据保护、视频编辑
Win To Go 极致利器(IXUNCIS固态U盘)无忧启动网成立20周年!广告联系 QQ:184822951 微信:wuyouceo
查看: 1335|回复: 6

ATTRIB在打成自解压包调用出错,已变相解决。

[复制链接]
发表于 2020-10-17 11:58:28 | 显示全部楼层 |阅读模式
本帖最后由 zts59 于 2020-10-19 08:24 编辑

  1. ::打成自解压包执行就不行。
  2. cd /d "%WinDir%\system32\drivers\etc"
  3. ::下面是测试权限
  4. rd aa
  5. md aa
  6. attrib -h -r -s hosts /s /d

  7. pause
复制代码


上面文件名是TEST.BAT


attrib 后面带/S /D 是因为出错找不到路径,所以才加上去的,不加也一样。
test.png

这是什么原因,搞不懂了。
发表于 2020-10-17 13:26:33 | 显示全部楼层
路过看看, 学习学习
回复

使用道具 举报

发表于 2020-10-17 16:54:23 | 显示全部楼层
没有那个文件就会出这问题
1. 直接attrib -h -s -r -a hosts不要管出不出错,即使出错也>nul
2. 先检测有没有hosts再做去属性操作
回复

使用道具 举报

发表于 2020-10-18 15:00:22 | 显示全部楼层
WinRAR 创建自解压文件时选择压缩模块 Default64.SFX

使用默认的压缩模块 Default.SFX 制作会自动重定向到 syswow64 文件夹,使用32位的 attrib.exe
sshot-3.png
sshot-1.png
sshot-2.png

点评

重定向?我用的是绝对路径,底成还是会重定向? 后面我用的POWERSHELL解决了 如果用64位的模块,会不会只能在64位下面用吧  详情 回复 发表于 2020-10-19 08:09
回复

使用道具 举报

 楼主| 发表于 2020-10-19 08:09:14 | 显示全部楼层
本帖最后由 zts59 于 2020-10-19 08:21 编辑
pznpt 发表于 2020-10-18 15:00
WinRAR 创建自解压文件时选择压缩模块 Default64.SFX

使用默认的压缩模块 Default.SFX 制作会自动重定向 ...
如果用64位的模块,会不会只能在64位下面用吧
重定向?我用的是绝对路径,底成还是会重定向?
测试在syswow64\drivers\新建一个空的ETC文件夹,再用attrib就成功了

最后我用的POWERSHELL解决了,也不用新建空文件夹

  1. powershell.exe $file =ls %windir%\system32\drivers\etc\hosts -force;$file.Attributes='archive'
复制代码




点评

嗯呐,我只不过试图解释一下“找不到路径”所产生的原因,如何做到64位和32位同时兼容我没有去关注。或许你的场景很特别,就一条命令,把它转成exe来运行有什么特殊用途吗? 如果要我来做的话我会直接在cmd中输入,  详情 回复 发表于 2020-10-19 15:19
回复

使用道具 举报

发表于 2020-10-19 15:19:56 | 显示全部楼层
zts59 发表于 2020-10-19 08:09
如果用64位的模块,会不会只能在64位下面用吧
重定向?我用的是绝对路径,底成还是会重定向?
测试在sysw ...

嗯呐,我只不过试图解释一下“找不到路径”所产生的原因,如何做到64位和32位同时兼容我没有去关注。或许你的场景很特别,就一条命令,把它转成exe来运行有什么特殊用途吗?
如果要我来做的话我会直接在cmd中输入,不用脚本。
如果是复杂点的问题我宁愿直接用脚本实现,而不是脚本转exe,更复杂的问题我会考虑直接写exe实现。
那一条 PowerShell 命令好像只能设置存档属性,其它属性改不了吧?
下面的 PowerShell 可以设置或删除 系统、只读、隐藏、存档 属性。
  1. $s = [IO.FileAttributes]::System;
  2. $r = [IO.FileAttributes]::ReadOnly;
  3. $h = [IO.FileAttributes]::Hidden;
  4. $a = [IO.FileAttributes]::Archive;
  5. $file = Get-Item "$ENV:winDir\System32\drivers\etc\hosts" -Force;
  6. #以下设置属性 相当于 attrib +s +r +h fileSpec
  7. If ( !($file.Attributes -BAND $s) ) {
  8.     $file.Attributes = $file.Attributes -BOR $s;
  9. }
  10. If ( !($file.Attributes -BAND $r) ) {
  11.     $file.Attributes = $file.Attributes -BOR $r;
  12. }
  13. If ( !($file.Attributes -BAND $h) ) {
  14.     $file.Attributes = $file.Attributes -BOR $h;
  15. }
  16. #以下删除属性 相当于 attrib -s -r -h fileSpec
  17. <#
  18. If ($file.Attributes -BAND $s) {
  19.     $file.Attributes = $file.Attributes -BXOR $s;
  20. }
  21. If ($file.Attributes -BAND $r) {
  22.     $file.Attributes = $file.Attributes -BXOR $r;
  23. }
  24. If ($file.Attributes -BAND $h) {
  25.     $file.Attributes = $file.Attributes -BXOR $h;
  26. }
  27. #>
  28. $file.Attributes;
  29. cmd /c pause
复制代码



点评

先是谢谢你, 肯定不只一条语句,还打包其它文件一起的 只是出现这个问题,现搞清楚就好。 另外POWERSHELL那一条语句,就可减掉其它属性,只有A属性了,相当于的覆盖之前的所有属性 确衬这是我测试  详情 回复 发表于 2020-10-21 08:10
回复

使用道具 举报

 楼主| 发表于 2020-10-21 08:10:26 | 显示全部楼层
pznpt 发表于 2020-10-19 15:19
嗯呐,我只不过试图解释一下“找不到路径”所产生的原因,如何做到64位和32位同时兼容我没有去关注。或许 ...

先是谢谢你,

肯定不只一条语句,还打包其它文件一起的

只是出现这个问题,现搞清楚就好。
另外POWERSHELL那一条语句,就可减掉其它属性,只有A属性了,相当于的覆盖之前的所有属性
确衬这是我测试的结果。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2020-12-2 17:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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