批处理新功能,并且存在多个变量和for循环的问题

时间:2014-07-30 18:40:37

标签: variables batch-file for-loop

通过搜索每个用户的appdata文件夹中的可执行文件,然后搜索一系列要执行的操作,尝试找出哪些用户拥有Google Chrome。在我们的系统上,一些用户文件夹位于永久磁盘上,D:。我在两个实例中都使用了for循环,但我确信有更好的方法。

如果我从电脑上运行它似乎工作但是当作为一个启动运行时似乎没有任何事情发生。想知道是否有人可以指出问题或效率低下,我知道那里。

@ECHO OFF

SETLOCAL ENABLEDELAYEDEXPANSION

FOR /D %%H IN ("D:\Users\*") DO (
    IF EXIST "%%H\appdata\local\google\chrome\application\chrome.exe" (
    DEL /Q "%%H\Desktop\Google Chrome.lnk"
    msiexec /i "[MSI PATH]" /quiet
    ECHO %DATE% %COMPUTERNAME% %%H Replaced >> "ChromeInstalls.txt"
    )
)   

FOR /D %%G IN ("C:\Users\*") DO (
    IF EXIST "%%G\appdata\local\google\chrome\application\chrome.exe" (
    DEL /Q "%%G\Desktop\Google Chrome.lnk"
    msiexec /i "[MSI PATH]" /quiet
    ECHO %DATE% %COMPUTERNAME% %%G Replaced >> "ChromeInstalls.txt"
    )
)

EXIT /b

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

问题是您正在解析for body的无效路径。尝试使用/ r开关来锁定包含chome文件的父驱动器,以处理指定驱动器内的所有子目录,这样就不必在set()中使用完整路径,例如..

@echo off

  For /r d: %%a in (*) do (

  If "%%~nxa"=="Chrome.exe" (

      DEL /Q "%%G\Desktop\Google Chrome.lnk"
      msiexec /i "[MSI PATH]" /quiet
      ECHO %DATE% %COMPUTERNAME% %%G Replaced >> "ChromeInstalls.txt"

       )

  )




  For /r c: %%a in (*) do (

  If "%%~nxa"=="Chrome.exe" (

      DEL /Q "%%G\Desktop\Google Chrome.lnk"
      msiexec /i "[MSI PATH]" /quiet
      ECHO %DATE% %COMPUTERNAME% %%G Replaced >> "ChromeInstalls.txt"

        )

   )

尝试一下。 Hpe有帮助。