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

Проблема в том, что Windows возвращает "Не удается найти указанный файл".

Я предполагаю, что это потому, что либо он считается системным файлом (думаю, что учетная запись пользователя контролирует мелкий уровень "system"), либо он скрыт, даже если вам не нужно 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

2 ответа2

2

Решение

Проблема заключается в следующей строке кода:

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 обычно не существуют, и обе они будут созданы за один раз.

дальнейшее чтение

1

Всегда процитируйте пути. пути с пробелом в имени должны заключаться в кавычки.

использовать этот :

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .