執行 %temp% 會轉到 Users 資料夾中的文件

執行 %temp% 會轉到 Users 資料夾中的文件

最近,我建立了一個 .bat 檔案來刪除臨時檔案並運行它。它的程式碼是:

@ECHO OFF
color 0f
echo -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
echo (                               Delete Temporary Files                                  )
echo -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
echo This will delete temporary files from your system.
pause
echo.
echo Deleting system terporary files...
del %SystemDrive%\Windows\Temp\ /Q
echo System temporary files deleted!
echo.
echo Deleting user temporary files...
del %tmp% /Q
echo User temporary files deleted!
echo.
echo All temporary files deleted!
echo.
echo Press ENTER to finish...
set /p exit=""

它有效,但現在(當我從檔案總管或運行框轉到 %Temp% 時),它會詢問您想如何開啟該文件? 當我選擇 Notepad++ 時,它會開啟一個包含我的使用者名稱的文件,該文件位於 C:\Users\Zackary (而不是我的使用者目錄 C:\Users\ZACKAR~1\ )。文件內容如下:

Invalid number of parameters
Invalid number of parameters
Invalid number of parameters
Invalid number of parameters
ERROR: Invalid syntax. Default option is not allowed more than '2' time(s).
Type "SETX /?" for usage.

澄清一下:%tmp% 和 %temp% 具有相同的值。這是直接從 CMD 取得的。

TEMP=C:\Users\ZACKAR~1\AppData\Local\Temp
TMP=C:\Users\ZACKAR~1\AppData\Local\Temp

此問題不會發生在該電腦上的任何其他使用者帳戶上。甚至在我出現遊標黑屏死機(導致更換硬碟)之前就已經發生了這種情況。我嘗試過重新啟動、退出並再次登入、確保資料夾存在等。

編輯: 我發現問題了。我的非 8.3 使用者資料夾 (Zackary R) 中有一個空格,導致程式將其視為 2 個參數C:\Users\Zackary(作為第一個參數)和R\AppData\Local\Temp(作為第二個參數)。它重新路由到檔案Zackary 中使用者資料夾。

答案1

我修復了它 - 我認為它們要簡單得多。

我的非8.3 使用者資料夾中有一個空格(例如,使用者名,而不是USERNA~1),這會導致程式將其視為2 個參數C:\Users\User (作為第一個參數)和Name \AppData\ Local\Temp(作為第二個參數)。它讀取第一個參數,使其重新路由到 Users 資料夾中的 User 檔案。刪除檔案 C:\Users\User 解決了這個問題(這並不重要,因為它只包含 CMD 錯誤)。

解決方法(不刪除該檔案)是在引號中使用 %tmp% 和 %temp% 引用。

相關內容