2015-06-19 12 views
1

为什么这不起作用?我想为每个用户桌面测试一个文件,然后如果它在那里,请重命名它。批处理做测试如果桌面上存在重命名url链接

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 
+1

如何预期它现在的工作?在DO之后加一个开头的圆括号,在暂停之前加一个圆括号。还用于调试目的rename命令前加上echo语句,看看它是否exands到一个有效的命令 –

+2

你有失踪'('在第一行(后'DO') – Stephan

回答

0
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 
1

我知道你正在寻找与您的批处理文件的帮助,但我想表现的相当的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 
}