У меня есть папка:

\sources\$OEM$\$$\Setup\Scripts\Programs\

Я хочу скопировать содержимое этой папки (пару файлов и папок в C:\Program Files\) на системный диск с помощью команды в setupcomplete.cmd

FOR /F "tokens=* delims=" %%D IN ('dir /a:d /b %~dp0Programs') DO (
    xcopy "%~dp0Programs\%%D\*" "C:\%%D\" /s /i
)

по какой-то неизвестной мне причине это не работает во время автоматической установки окон (просто черный экран навсегда), хотя запуск setupcomplete.cmd из командной строки работает нормально.

Одна проблема с setupcomlete.cmd во время автоматической установки - это когда другой .bat или .cmd из другой папки (например, \scripts \folder1) запускается из setupcomplete.cmd он застревает в этом \scripts\folder1\ что препятствует выполнению дальнейших команд из \scripts\

Я экспериментировал с %~dp0 и с некоторой удачей, но то, что работает из командной строки, не всегда работает в реальной ситуации установки.

1 ответ1

0

В setupcomplete.cmd вы можете попробовать реализовать cd %~dp0 за которым следует cd .. или pushd .. Это должно поднять вас на один уровень выше, и вы сможете работать с именами переменных.

Если вы просто хотите скопировать файлы / папки, вы можете поместить их в [DVD]:\sources\$OEM$\$1\[*] где [*] - это папка, в которую вы хотите попасть.

Например, вы хотите скопировать папку ABC в C:\Program Files\ while (или после? Я больше не знаю), установите папку ABC в [DVD]:\sources\$OEM$\$1\Program Files\ .

$$ означает C:\Windows\

$1 обозначает C:\ (диск root)

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