0

我正在尝试找到一种方法来删除连接到本地网络的 Windows 7 机器上的选定文件/文件夹。

我遇到的问题是“我的文档”的位置在所有机器上都不同,因为在 Windows 7 中路径 = C:\Users**username**\Documents.

我想将批处理文件放在共享目录中,以便它可以在需要的时间在机器上本地运行。

非常感谢任何帮助或建议。

4

2 回答 2

0

如果“我的文档”文件夹在所有带有环境变量的 Windows 操作系统中命名相同,这将非常简单:%USERPROFILE%总是指向用户的文件夹,并且"%USERPROFILE%\My Documents"会这样做。不幸的是,在 Windows XP 中,它被命名为My Documents,而在 Windows Vista 和 7 中,它被命名为Documents. 如果您提到的所有计算机都将我的文档命名为相同的名称,则可以使用。

虽然有一种方法可以不检查 Windows 操作系统,但它需要管理访问权限。我从Stack Overflow 上的一个答案中得到了这个答案,它可以在注册表中"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"找到Personalreg query将找到该值,这可以通过for循环提取:

for /f "skip=1 tokens=1,2* delims= " %%g in (`reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Personal') do set "documents=%%i"

echo %documents%
del "%documents%\etc"

编辑:或者,您也可以搜索Documents文件夹的存在,尽管这可能会被Documents某人的 Windows XP 用户配置文件目录中可能存在的文件夹所抛弃。

if exist "%USERPROFILE%\Documents" (
    del "%USERPROFILE%\Documents\etc"
) else (
    del "%USERPROFILE%\My Documents\etc"
)

编辑 2:要删除 My Documents 中的所有文件和子文件夹(如果名称为My Documents),但不删除文件夹本身,请使用以下命令:

del "%USERPROFILE%\My Documents\*"
for /d %%i in ("%USERPROFILE%\My Documents\*") do rd /s /q "%USERPROFILE%\My Documents\%%i"

(第一个是删除所有文件,第二个是所有子文件夹)

编辑 3:找出是否Documents存在并删除所有:

if exist "%USERPROFILE%\Documents" (
    rd /s /q "%USERPROFILE%\Documents"
    md "%USERPROFILE%\Documents"
) else (
    rd /s /q "%USERPROFILE%\My Documents"
    md "%USERPROFILE%\My Documents"
)

/s是删除所有文件和子文件夹,并且/q是安静模式,他们不会提示您是否删除任何内容。然后md再次制作文件夹。

于 2013-05-07T08:40:34.723 回答
0

如果您想编写一个适用于不同用户的 bat 文件并从用户的“我的文档”文件夹中删除文件,那么您可以使用如下命令编写一个 bat 文件:

del %USERPROFILE%\Documents\file_to_delete
rd /qs %USERPROFILE%\Documents\folder_to_delete

Windows 将变量 USERPROFILE 设置为每个用户的正确位置。您可以在 cmd.exe 中检查 USERPROFILE 和其他环境变量的值

set
于 2013-05-07T08:37:07.850 回答