我正在编写一个简短的批处理程序来移动一些快捷方式。
问题是 Windows 返回“找不到指定的文件”。
我想这是因为它要么被视为系统文件(认为用户帐户控制小级别的“系统”),要么是因为它被隐藏了,即使你不必dir /a
在目录列表中显示它。
我需要在这里更改什么?文件名/路径都是正确的,因为我直接从 Windows 资源管理器复制了它们。
cd C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System
mkdir Settings
cd C:\ProgramData\Microsoft\Windows\Start Menu
dir
move "Default Programs.lnk" "C:\ProgramData\Microsoft\Windows\Start Menu\System\Settings"
pause
答案1
解决方案
问题出在下面这行代码中:
move "Default Programs.lnk" "C:\ProgramData\Microsoft\Windows\Start Menu\System\Settings"
正如@Scott 指出的那样,目标路径是错误的。特别是:
Start Menu\System
该部分应为:
Start Menu\Programs\System
评论
即使你能够解决这个问题,也还有其他事情值得一提。
更改当前文件夹
cd C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System
如果您所在的驱动器不是C:
:,则上述命令将无法按您预期的方式工作:
D:\>cd C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System
D:\>mkdir Settings
在上面的示例中,Settings
文件夹将在驱动器的根目录中创建D:
。为避免这种情况,请使用以下/d
参数:
cd /d C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System
cd
当命令扩展启用时(默认情况下启用),该命令不会将空格视为分隔符。无论如何,使用引号是个好主意:
cd /d "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System"
C:
不过,该文件夹可能根本没有存储在驱动器上。您可以使用%ProgramData%
环境变量这是在 Windows Vista 中引入的:
cd /d "%programdata%\Microsoft\Windows\Start Menu\Programs\System"
在早期的操作系统中,你应该使用%AllUsersProfile%
。变量名不区分大小写。
创建文件夹
mkdir Settings
为了节省输入时间,你可以使用md
:
md Settings
与命令不同cd
,mkdir
将md
空格视为分隔符。假设您运行以下命令:
md Some settings
在这种情况下,会创建两个文件夹:Some
和settings
。如果您打算创建一个名为的文件夹,Some settings
则需要使用引号。为了保持一致性,我建议始终使用引号;即使它们不是强制性的:
md "Settings"
您还可以指定完整路径,如下所示:
md "%programdata%\Microsoft\Windows\Start Menu\Programs\System\Settings"
System
和子文件夹Settings
通常不存在,并且会一次性创建。
进一步阅读
答案2
始终引用路径。名称中带有空格的路径必须引用。
用这个 :
cd "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\System"
mkdir Settings
cd "C:\ProgramData\Microsoft\Windows\Start Menu"
dir
move "Default Programs.lnk" "C:\ProgramData\Microsoft\Windows\Start Menu\System\Settings"
pause