Batch file 如果桌面上存在重命名url链接,则批处理Do测试

Batch file 如果桌面上存在重命名url链接,则批处理Do测试,batch-file,for-loop,Batch File,For Loop,为什么这不起作用?我想测试每个用户桌面上的一个文件,然后如果有,重命名它 FOR /F "tokens=*" %%G IN ('DIR c:\users /B') DO if exist "C:\Users\%%G\Desktop\My Link With Spaces.url" ( rename "C:\Users\%%G\Desktop\My Link With Spaces.url" "My NEW Link With Spaces.url" ) pause 我知道您正在寻求有关

为什么这不起作用?我想测试每个用户桌面上的一个文件,然后如果有,重命名它

FOR /F "tokens=*" %%G IN ('DIR c:\users /B') DO 

if exist "C:\Users\%%G\Desktop\My Link With Spaces.url" (

rename "C:\Users\%%G\Desktop\My Link With Spaces.url" "My NEW Link With Spaces.url"

)
pause

我知道您正在寻求有关批处理文件的帮助,但我想展示等效的powershell解决方案

$files = Resolve-Path "C:\Users\*\Desktop\My Link With Spaces.url"
$newName = "My NEW Link With Spaces.url" 

foreach($file in $files)
{
    $destination = Join-Path (Split-Path $file -Parent) $newName
    Move-Item -Source $file -Destination $destination
}

它现在是如何按照预期工作的?在DO后面添加一个开始圆括号,在暂停之前添加一个结束圆括号。此外,出于调试目的,在rename命令之前添加一条echo语句,以查看它是否扩展为有效的命令您缺少
在第一行中(在
之后)DO
FOR /F "tokens=*" %%G IN ('DIR c:\users /B') DO (

    if exist "C:\Users\%%G\Desktop\My Link With Spaces.url" (

        rename "C:\Users\%%G\Desktop\My Link With Spaces.url" "My NEW Link With Spaces.url"

    )
)
pause