2015-06-19 36 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 
}