在 Windows 中更改属性并递归重命名

在 Windows 中更改属性并递归重命名

在 Windows 中,有一种恶意软件会挂载一个虚假的可执行文件 (522k),并将真正的可执行文件 (.exe) 重命名为 g*.exe,并将属性更改为隐藏和只读

例子:

folder 1
  Bar.exe # fake
  gBar.exe # real (hidden and only Read)

folder2
  Foo.exe # fake
  gFoo.exe # real (hidden and only Read)

我想知道是否有适用于 Windows 的命令(以安全模式运行特权),该命令对可执行文件进行递归搜索(在整个硬盘中),如果出现巧合(*.exe 和 g*.exe 位于同一目录或子目录中),则会更改真实的 .exe 的属性,删除假的或进行替换(从 g*.exe 到 *.exe)

更新:

  1. 我已经删除了 linux 命令以避免混淆
  2. 这是我目前所做的(没什么大不了的):

    for /r "c:\" %%x in (g*.exe) do ren "%%x" "c:\*.exe"
    attrib -h -s -r +a g*.exe
    

更新:

响应显示正确,但最终可能会损害系统文件,因此,我将从 Linux 解决问题(我最初的建议)并且我放弃了 Windows 的问题

感谢大家的贡献(特别感谢皮条客果汁 IT

答案1

您可以运行两个单独的对于/f循环与目录命令使用/a:hin one 来迭代文件,a:/r另一个迭代只读文件。

您可以使用属性带参数的命令-h用于删除文件的属性以及-r删除的参数只读文件的属性。

笔记:您可以使用"g*.exe"以字母“开头的所有 exe 文件作为通配符G“。另外,请确保从您想要开始递归查找适用文件的目录运行此程序。

删除隐藏属性

FOR /F "TOKENS=*" %a IN ('dir /s /b /a:h "*.exe"') do attrib -h "%~a"

删除只读属性

FOR /F "TOKENS=*" %a IN ('dir /s /b /a:r "*.exe"') do attrib -r "%~a"

删除虚假文件并重命名真实文件

根据你的澄清找到EXE文件g文件名开头带有字符的文件,请使用以下批处理脚本你删除只读属性。这将递归地找到g带前缀的文件,使用从这些文件名解析出来的内容设置一个变量g,删除假文件,然后将g带前缀的文件重命名回原始名称。

@ECHO ON
setlocal enabledelayedexpansion
set src=C:\
set mvFldr=C:\Moved
if not exist "%mvFldr%" MD "%mvFldr%"
FOR /F "TOKENS=*" %%a IN ('dir /s /b /a-d "%src%\g*.txt"') do (
    set fakename=%%~NXa
    set realname=!fakename:~1!
    if /i not [%%~Xa]==[.exe] GOTO :EOF
    if exist "%%~DPa!realname!" if exist "%%~DPa!fakename!" move "%%~DPa!realname!" "%mvFldr%"
    ::if exist "%%~DPa!realname!" if exist "%%~DPa!fakename!" del /q /f "%%~DPa!realname!"
    ren "%%~DPa!fakename!" "!realname!"
    )
EXIT

更多资源

相关内容