运行 %temp% 转到用户文件夹中的文件

运行 %temp% 转到用户文件夹中的文件

最近我建了一个删除临时文件的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% 引用。

相关内容