我正在尝试找到一种方法来删除连接到本地网络的 Windows 7 机器上的选定文件/文件夹。
我遇到的问题是“我的文档”的位置在所有机器上都不同,因为在 Windows 7 中路径 = C:\Users**username**\Documents.
我想将批处理文件放在共享目录中,以便它可以在需要的时间在机器上本地运行。
非常感谢任何帮助或建议。
我正在尝试找到一种方法来删除连接到本地网络的 Windows 7 机器上的选定文件/文件夹。
我遇到的问题是“我的文档”的位置在所有机器上都不同,因为在 Windows 7 中路径 = C:\Users**username**\Documents.
我想将批处理文件放在共享目录中,以便它可以在需要的时间在机器上本地运行。
非常感谢任何帮助或建议。
如果“我的文档”文件夹在所有带有环境变量的 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"
找到Personal
。reg 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
再次制作文件夹。
如果您想编写一个适用于不同用户的 bat 文件并从用户的“我的文档”文件夹中删除文件,那么您可以使用如下命令编写一个 bat 文件:
del %USERPROFILE%\Documents\file_to_delete
rd /qs %USERPROFILE%\Documents\folder_to_delete
Windows 将变量 USERPROFILE 设置为每个用户的正确位置。您可以在 cmd.exe 中检查 USERPROFILE 和其他环境变量的值
set