批处理脚本通配符或%用于目录读取?

时间:2015-06-08 13:56:41

标签: windows batch-file

因此,如果我们提供完整路径,此脚本会删除所有Chrome数据。但无论如何使用通配符而不是一直更改用户名?我在服务器中有40个用户。 *和%%根本不起作用。有什么建议?

    @echo off
    set ChromeDir=C:\Users\*\AppData\Local\Google\Chrome\User Data
    del /q /s /f "%ChromeDir%"
    rd /s /q "%ChromeDir%"
    cls
    IF %ERRORLEVEL%==0 (
    @echo "Success Message"
    TIMEOUT /T 3 /NOBREAK 
    exit0
    ) ELSE (
    @echo "Error Message"
    TIMEOUT /T 3 /NOBREAK 
    exit 1001
    )

1 个答案:

答案 0 :(得分:2)

我有一些可以帮到你的建议。首先,缩进代码以使其更具可读性。并非所有批次都必须左对齐。其次,使用for /d循环遍历目录。第三,如果在同一代码块中设置变量并引用该变量,则必须进行延迟扩展。 (虽然设置!ChromeDir!并不重要,但我认为它会使代码更清晰。)

@echo off
setlocal enabledelayedexpansion

set "errors=0"

for /d %%I in ("C:\Users\*") do (

    set "ChromeDir=%%~I\AppData\Local\Google\Chrome\User Data\Default\Cache"

    if exist "!ChromeDir!" (

        rem // Conditional execution increments %errors% if rd exits non-zero
        rd /q /s "!ChromeDir!" || set /a errors += 1
    )
)

echo %errors% errors encountered.

TIMEOUT /T 3 /NOBREAK
exit /b %errors%