Пакет закрывается преждевременно на для команды/f

Чтобы изменить путь к папке moodledata, просто измените путь в $CFG->dataroot в config.php (находится в корне Moodle). После этого очистите папку cache и установите права на запись для папки.

5
задан Community 23 May 2017 в 11:45
поделиться

5 ответов

Я получил первый эмпирический ответ:

for /f %%s in (version.txt) do ...

работает просто великолепно, на каждом компьютере.

Это кажется for /f работы с именем файла, не с любой DOS управляют как 'имя файла типа'.

Однако это не верно для компьютера всего моего клиента (на некоторых, 'имя файла типа' хорошо работает),

Если Вы хотите 15 (легкий?) точки ;-), можно оставить ответ на вопрос:
почему 'для/f' когда-то не работает ни с чем больше, чем имя файла. И почему это просто закрыло сеанс DOS?


Править: 3 года спустя barlop стоял перед аналогичной ситуацией, детализированной в вопросе"for /f завершения cmd сразу запрашивают?". Его заключение было:

COMSPEC действительно становился перечисленным при выполнении SET+ENTER.
Так, я открыл окно переменных среды и видел COMSPEC не был перечислен под пользовательскими или системными переменными. Я добавил его к Системным переменным, запустил командную строку, и это, кажется, хорошо работает.

Этот поток на ss64 форуме, упомянутом Andriy M в его ответе на вопрос barlop, содержит детали.

Выход из оболочки в"for"цикл для завершения'dir'(или безотносительно команды Вы попросили завершаться), требует ComSpec быть приведенным в порядок для перезагрузки cmd окно.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\ComSpec=
%SystemRoot%\system32\cmd.exe
5
ответ дан 14 December 2019 в 13:50
поделиться

Относительно расширений команды существует возможность, которой CMD.EXE называют с/E:OFF так, чтобы расширения команды были отключены (даже при том, что включенный в реестре).

Если использование расширений команды окружает опции в сценарии, ВЫСОКО предложено сделать следующий прием в начале сценариев.

- Информация вставляется из http://www.ss64.com/nt/setlocal.html

SETLOCAL установит ERRORLEVEL, если дали аргумент. Это будет нуль, если один из двух допустимых аргументов будет дан и один иначе.

Можно использовать это в пакетном файле, чтобы определить, доступны ли расширения команды, с помощью следующей техники:

VERIFY errors 2>nul
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 echo Unable to enable extensions

Это работает, потому что "ПРОВЕРЯЮТ, что ошибки" устанавливают ERRORLEVEL на 1, и затем SETLOCAL не сбросит значение ERRORLEVEL, если расширения не будут доступны (например, если сценарий работает в соответствии с command.com),

Если Расширения Команды будут пожизненно нетрудоспособны затем, то SETLOCAL ENABLEEXTENSIONS не восстановит их.

1
ответ дан 14 December 2019 в 13:50
поделиться

Случается так, что файл не имеет расширения, и таким образом cmd рассматривает его как каталог, который не существует?

0
ответ дан 14 December 2019 в 13:50
поделиться

Ожидайте..., могло случиться так, что у Вас есть апострофы вокруг имени файла? MS говорит, что filenamesets получают двойные кавычки, и литеральные строки получают апострофы.

for /F ["usebackqParsingKeywords"] {%% | %}variable in ("filenameset") do command [CommandLineOptions]

for /F ["usebackqParsingKeywords"] {%% | %}variable in ('LiteralString') do command [CommandLineOptions]

for /F ["usebackqParsingKeywords"] {%% | %}variable in (`command`) do command [CommandLineOptions]

Если, конечно, Вы не делаете это.

Можно использовать для/F логики синтаксического анализа на непосредственной строке, путем обертывания filenameset между круглыми скобками в одинарных кавычках (то есть, 'filenameset'). Filenameset рассматривают как одну строку входа из файла, и затем он анализируется.

0
ответ дан 14 December 2019 в 13:50
поделиться

Если расширения команды отключены, (набор), параметр к для команды должен быть файлом.

Если расширения команды включены, (набор), параметр к для команды может быть файлом, строкой или командой.

Расширения команды отключены на компьютере клиента, где 'набор' имени файла типа перестал работать.

Для получения информации о включении или отключении расширений команды, введите "cmd/?"

0
ответ дан 14 December 2019 в 13:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: