Решение

Решение

Я пишу короткую пакетную программу для перемещения нескольких ярлыков.

Проблема в том, что 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

Связанный контент