最近我建了一个删除临时文件的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
此问题不会发生在此计算机上的任何其他用户帐户上。在我出现带有光标的黑屏死机(导致更换硬盘)之前,它就发生了。我尝试过重新启动、退出并重新登录、确保文件夹存在等。如何让 %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% 引用。