解决方案

解决方案

我正在编写一个简短的批处理程序来移动一些快捷方式。

问题是 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

与命令不同cdmkdirmd空格视为分隔符。假设您运行以下命令:

md Some settings

在这种情况下,会创建两个文件夹:Somesettings。如果您打算创建一个名为的文件夹,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

相关内容