zts59 发表于 2020-10-17 11:58:28

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

本帖最后由 zts59 于 2020-10-19 08:24 编辑


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

pause


上面文件名是TEST.BAT


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


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

lili95 发表于 2020-10-17 13:26:33

路过看看, 学习学习

msold5 发表于 2020-10-17 16:54:23

没有那个文件就会出这问题
1. 直接attrib -h -s -r -a hosts不要管出不出错,即使出错也>nul
2. 先检测有没有hosts再做去属性操作

pznpt 发表于 2020-10-18 15:00:22

WinRAR 创建自解压文件时选择压缩模块 Default64.SFX

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

zts59 发表于 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解决了,也不用新建空文件夹

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



pznpt 发表于 2020-10-19 15:19:56

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

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


zts59 发表于 2020-10-21 08:10:26

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

先是谢谢你,{:1_194:}

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

只是出现这个问题,现搞清楚就好。
另外POWERSHELL那一条语句,就可减掉其它属性,只有A属性了,相当于的覆盖之前的所有属性
确衬这是我测试的结果。
页: [1]
查看完整版本: ATTRIB在打成自解压包调用出错,已变相解决。