无忧启动论坛

标题: ATTRIB在打成自解压包调用出错,已变相解决。 [打印本页]

作者: zts59    时间: 2020-10-17 11:58
标题: ATTRIB在打成自解压包调用出错,已变相解决。
本帖最后由 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 是因为出错找不到路径,所以才加上去的,不加也一样。


这是什么原因,搞不懂了。

作者: lili95    时间: 2020-10-17 13:26
路过看看, 学习学习
作者: msold5    时间: 2020-10-17 16:54
没有那个文件就会出这问题
1. 直接attrib -h -s -r -a hosts不要管出不出错,即使出错也>nul
2. 先检测有没有hosts再做去属性操作
作者: pznpt    时间: 2020-10-18 15:00
WinRAR 创建自解压文件时选择压缩模块 Default64.SFX

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

sshot-3.png (31.49 KB, 下载次数: 213)

sshot-3.png

sshot-1.png (25.09 KB, 下载次数: 211)

sshot-1.png

sshot-2.png (23.67 KB, 下载次数: 222)

sshot-2.png

作者: zts59    时间: 2020-10-19 08:09
本帖最后由 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'
复制代码





作者: pznpt    时间: 2020-10-19 15:19
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
复制代码




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

先是谢谢你,

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

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




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