terminate batch job y n что это

В Windows cmd, как мне запрашивать ввод пользователя и использовать результат в другой команде?

У меня есть Windows.bat файл, который я хотел бы принять для ввода пользователем, а затем использовать результаты этого ввода как часть вызова дополнительных команд.

Например, я хотел бы принять идентификатор процесса от пользователя, а затем запустить jstack против этого идентификатора, помещая результаты вызова jstack в файл. Однако, когда я пытаюсь это сделать, это не работает.

Вот мой пример файла bat bat:

и вот что отображается в jstack.txt:

ОТВЕТЫ

Ответ 1

Попробуй это:

Например:

Ответ 2

Синтаксис таков: set/p variable=[string]

Посетите http://commandwindows.com/batch.htm или http://www.robvanderwoude.com/userinput.php для более глубокого погружения в пользовательский ввод с различными версиями пакетных файлов ОС Windows.

После того, как вы установили свою переменную, вы можете использовать ее следующим образом.

обратите внимание на синтаксис %VariableName%

Ответ 3

Я не уверен, что это относится ко всем версиям Windows, однако на машине XP у меня есть, я должен использовать следующее:

Без строки приглашения в кавычки я получаю различные результаты в зависимости от текста.

Ответ 4

если я получу то, что вы хотите, это отлично работает. вы также можете использовать% input% в других командах.

Ответ 5

Пробел после = очень важен.

Ответ 6

Ответ 7

Для SETX не существует документально подтвержденного/приглашающего параметра, как для SET.

Если вам нужно запросить переменную среды, которая выживет при перезагрузке, вы можете использовать SETX для ее сохранения.

Переменная, созданная SETX, не будет использоваться до перезапуска командной строки. Тем не менее, вы можете SETX использовать переменную, которая уже была SET, даже если она имеет то же имя.

Это работает для меня в Windows 8.1 Pro:

(Необходимы кавычки вокруг существующей переменной.)

Эта процедура позволяет вам использовать временную переменную SET, созданную во время текущего сеанса, и позволит вам повторно использовать созданную SETX переменную при перезагрузке компьютера или перезапустить приглашение CMD.

(Отредактировано для правильного форматирования абзацев кода.)

Ответ 8

У меня есть маленький cmd, который я использую при подготовке компьютера к клиентам: он вызывает пользователя для ввода и переименовывает компьютер в него.

Ответ 9

Есть две возможности.

Таким образом, весь правильный пакетный файл должен быть:

И/или 2. Вы поместили его в код (и забыли сообщить нам вопрос), но когда вы запустили пакетный файл, вы нажали клавишу Enter вместо ввода идентификатора (скажем, 1234).

То, что происходит, является результатом этих двух ошибок: предполагается, что jstack вызывается с идентификатором, который вы ему предоставили.

Но в вашем случае (в соответствии с кодом, который вы указали в вопросе) вы назвали его без какой-либо переменной. Вы написали:

Поэтому, когда вы запускаете jstack без переменной, он выводит следующее:

Но я подозреваю, что у вас в jstack %id% > jstack.txt пакетного файла был jstack %id% > jstack.txt с %id (и он опущен по ошибке из вопроса), и что вы нажали ввод без ввода идентификатора. Затем пакетная программа повторила идентификатор, который теперь является «Enter ID:», а затем запустила jstack Enter ID: > jstack.txt

Jstack сам повторил ввод, обнаружил ошибку и попросил прекратить.
И все это было записано в файл jstack.txt.

Ответ 10

Знаки доллара вокруг переменной не работают на моей машине Vista, но знаки процента это делают. Также обратите внимание, что промежуточный пробел в строке «set» будет отображаться между приглашением и пользовательским вводом.

Ответ 11

к моему пакетному заданию netsh. Теперь он показывает мне место, в котором я отвечаю, как точка для этого образца. Я постоянно → выходной файл, поэтому я знаю теперь «home», «work», «Starbucks» и т.д. Ищете чистый воздух, я могу эвакуировать самые низкие каналы использования и есть ли 5 ​​или только все беспроводные локальные сети 2,4 МГц.

Ответ 12

В первом прогоне просто проигнорируйте сообщение об отсутствии файла с начальным значением переменной (или создайте файл Var1.txt вручную).

Источник

How can I suppress “Terminate batch job (Y/N)” confirmation in PowerShell?

When I press Ctrl + C in PowerShell, I receive:

Does PowerShell provide any more control over batch jobs than what CMD does?

3 Answers 3

The behavior is neither caused by PowerShell nor can PowerShell change it (as evidenced by the PowerShell source-code repo not containing the prompt message).

If you do not explicitly control the invocation of the target executable, you’re out of luck (unless you’re willing to install third-party cmd.exe replacements) and must press Ctrl+C twice in order to terminate execution.

To demonstrate the behavior:

The examples assume that Node.js is installed and that node.exe is therefore in your PATH:

First, invoke node.exe directly, with a tight loop that requires you to press Ctrl+C to terminate the process.

Now, let’s create a sample batch file that invokes the same command and invoke that batch file:

To demonstrate that gulp is a cmd file:

You say you’re running your command via gulp ‘s CLI.

That gulp invokes gulp.cmd can be verified as follows:

You’ll see something like:

More generally, on Windows, a project’s node_modules\.bin subfolder contains pairs of CLI entry points for the CLIs that come with packages that the project depends on locally:

Updates and future considerations:

*.ps1 files aren’t directly executable from outside of PowerShell, notably from cmd.exe and File Explorer (and changing that is nontrivial).

PowerShell still hasn’t fully replaced cmd.exe as the default shell, as of Windows 10 (and won’t anytime soon, if ever).

When called from PowerShell, a *.ps1 file would be found and run in-process, so a possible solution is for the npm project to also provide *.ps1 helper scripts, which would take precedence over *.cmd files of the same name.

Источник

How to supress «Terminate batch job (Y/N)» confirmation?

In cmd, when we press Ctrl+C we get the target application terminated but if the target application is called from a batch file, we get this «Terminate batch job (Y/N)» confirmation. I can never remember an instance where I chose not to terminate the batch job. How can we skip this confirmation?

15 Answers 15

AFAIK you can’t as this behavior is by design and controlled by the command interpreter. There is no method of «mapping» or even «intercepting» this unless you de-compile and recompile the interpreter directly.

At this site, I found an effective solution:

To not have to type this out every time I made a second script called script.cmd in the same folder with the line above. I’ve tested this technique on XP only, but others have confirmed it on Win 7.

Nathan adds: another option is to put the following code at the top of script.cmd which does the same thing in one file:

Press Ctrl + C twice.

Frickin’ awesome, IMO!

1 But you will need to close and reopen cmd.exe before it takes effect.
2 Original unmaintained CLink repo here: http://mridgers.github.io/clink/

If you don’t need to do anything in the batch file after your application finishes normally, then using the start command ensures that the batch file is already finished by the time you press Ctrl-C. And hence the message will not appear.

(Tested on Windows XP.)

terminate batch job y n что это. Смотреть фото terminate batch job y n что это. Смотреть картинку terminate batch job y n что это. Картинка про terminate batch job y n что это. Фото terminate batch job y n что это

I’ve been fighting with this desire to avoid the «Terminate batch job» prompt for a little while.

The environment substitution of a new command interpreter may not be for everyone, but, to the naked eye, looks and works well for me.

Here’s the modification I ended up with:

However, patching cmd.exe is not something I would do for that.

TCC/LE, which is a free CMD replacement (think of it as CMD++), has an option to suppress the terminate batch job prompt. You can find the option in the TCC Startup Configuration Dialog:

Cancel Batch File on Ctrl-C: Cancel batch file processing without the usual prompt when you press Control-C.

terminate batch job y n что это. Смотреть фото terminate batch job y n что это. Смотреть картинку terminate batch job y n что это. Картинка про terminate batch job y n что это. Фото terminate batch job y n что это

If you’ve never heard of TCC/LE before, here’s some blurb from the site:

TCC/LE is a replacement for the CMD command line (the default Windows command prompt). TCC/LE is a superset of CMD, with 111 internal commands (CMD has fewer than 40), 240 internal variables and functions, and hundreds of enhancements to existing CMD commands.

TCC/LE works with your existing command line applications and batch files, but offers major improvements in command line and batch file capabilities, and adds thousands of new features to your command prompt windows.

I used TCC/LE for years and 4NT before it. I’ve got a lot of love for it and can recommend it. Only reason I don’t still use it is because I almost exclusively use PowerShell now.

Источник

Фигурнов В.Э. IBM PC для пользователя. Книга содержит подробное и доступное для начинающих описание возмож

Глава 32. Командные файлы DOS. 347

Глава 33. Работа с архивными файлами в DOS. 354

вторять одни и те же команды DOS (может быть, с небольшими изменениями) для то-

го, чтобы осуществить некоторые периодически выполняемые действия. Операционная

система DOS позволяет записать нужную для этого последовательность команд в спе-

циальный файл, называемый командным файлом. Командный файл должен иметь рас-

I cd \ Ч переход в корневой каталог:

I wipeinfo c:\*.bak /N /S /batch Ч удаление файлов с расширением, bake диска С::

\ speedisk с: /fd /v Ч сжатие диска С:.
1 Чтобы не набирать каждый раз эти команды, создадим файл COMPACT.ВАТ следующего

‘. cd \
I wipeinfo c:\».bak /N /S /batch

I speedisk c: /fd /v
::’ Тогда при вводе команды COMPACT выполнится нужная последовательность команд.
32. 1. Выполнение командных файлов
Рассмотрим последовательность запуска и выполнения командных файлов.
1. Для выполнения командного файла, находящегося в текущем каталоге или в одном

из каталогов, указанных в команде DOS Path, необходимо ввести имя этого файла

и параметры (о параметрах командных файлов см. ниже). Расширение имени файла

ном из каталогов, указанных в команде DOS Path, необходимо указывать полное

имя командного файла, включающее путь к тому каталогу, в котором находится ко-

файл ACtOUNT.BAl, находящийся в каталоге C:\DOC\BATCH, и указать параметры

командного файла BILL. DOC и /P. Тогда для выполнения этого командного файла необ-

«Ч^ После этого на экране появится запрос:

Terminate batch job (Y/N)?

(Прервать выполнение командного файла (Да/Нет)?)
Если ответить (Y), то выполнение командного файла будет окончено, а оставшиеся

команды из командного файла будут проигнорированы. Если ответить QQ, то выпол-

нение командного файла будет продолжено со следующей команды.
4. Если вынуть дискету, на которой расположен выполняемый в данный момент ко-

мандный файл, то перед выполнением следующей команды DOS попросит Вас сно-

ва вставить эту дискету в дисковод.

5. В командном файле можно вызвать другой командный файл, просто указав его имя

(и, если надо, параметры). Но после окончания работы вызванного файла выполне-

ние исходного командного файла продолжено не будет.
6. Если требуется из одного командного файла вызвать выполнение другого командно-

можно сделать командой: call имя-командного-файла ^параметры)
32.2. Вызов другого командного файла
Назначение Если из командного файла вызвать другой командный файл, вставив в него имя этого

командного файла с необходимыми параметрами, то после завершения вызванного

файла возврата управления в исходный командный файл не произойдет. Если же такой

возврат необходим, следует использовать команду call.
Форма

команды call имя-командного-файла ^параметры)
Команда Call вызывает выполнение командного файла из другого командного файла.

Если в командной строке указаны какие-либо параметры, кроме имени командного

файла, то эти параметры передаются командному файлу, они доступны там как

значения символов %1 Ч %9. По окончании выполнения вызванного командного

файла продолжается (со следующей строки) выполнение исходного командного файла.
Замечания. 1. В команде Call не допускается перенаправления ввода-вывода (использова-

ния символов » » и «!»).
2. Команда Call работает в MS DOS, начиная с версии 3.3. В предыдущих версиях DOS

режиме. Это может быть очень удобно для отладки кмандных файлов.
Форма г команды command /Y /С имя-командного-файла ^параметры)
Текст каждой команды будет выводиться перед выполнением на экран. Для

выполнения команды надо нажать клавишу Q или (Enter), для пропуска команды Ч

CM) или djc).
32.4. Параметры командных файлов
Часто приходится выполнять одни и те же команды или последовательности команд

DOS с весьма небольшими отличиями. Например, для трансляции программы на Форт-

ране с помощью транслятора фирмы Microsoft надо набирать команды типа: fl /412

здать файл FORT.ВАТ следующего содержания:
fl /412 /AL /Ox /FP187 /С XI
При выполнении этого командного файла символ %1 будет заменен на значение перво-

го параметра при вызове командного файла. Например, если ввести команду FORT

SIMPSON.FOR, то вместо %1 будет подставлено SIMPSON.FOR и тем самым будет вы-

полнена команда^ /412 /AL /Ox /FP187 /с SIHPSON.FOR
Символы %1 Ч %9 Всего может быть использовано до девяти параметров, обозначаемых символами %1

Ч %9. Если в командной строке при вызове командного файла задано меньше девяти

параметров, то «лишние» символы из %1 Ч %9 замещаются пустыми строками. Если

Вы хотите использовать в командном файле более девяти параметров, можно

применить команду shift (см. ниже).
Символ %0 В командном файле можно использовать также символ %0, значение которого Ч имя

выполняемого командного файла (в той форме, в которой оно указано в команде,

вызвавшей командный файл).
Пример
Если в командном файле знак процента используется не для обозначения параметров,

а для других целей (например, как часть имени файла), то его надо набрать дважды.

мандного файла XYZ%%.COM.
Иногда в командном файле требуется применить более девяти параметров, либо

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

этом %0 присваивается старое значение %1, %1 Ч старое значение %2 и т.д. %9

присваивается значение следующего за старым значением %9 параметра в командной

строке, а если он не задан, то новое значение %9 пустая строка. Команду Shift можно

%0 = «xxx.bat», %1 = «аа», %2 = «bb», %3 = «ее», %)4 Ч %9 = пустые строки. После вы-
полнения команды Shift:
.о9 = пустые строки. После вы-

‘i.Х^^.jХ^Х^l^.^ ^»»
По умолчанию команды пакетного файла выводятся на экран перед выполнением. Если

в пакетный файл вставить команду echo off, то выполняемые за ней команды не будут

выводиться на экран. После выдачи команды echo off часто полезно использовать

команду els, чтобы сделать более удобным просмотр сообщений, выводимых из

командного файла.
Команда echo on включает режим вывода выполняемых команд на экран. Очень часто в

качестве первой строки командного файла используется команда echo off. В этом слу-

чае в начале выполнения командного файла на экран выводится строка echo off, а

следующие строки командного файла на экран не выводятся.
Можно избежать вывода (дублирования) на экран и любой отдельной строки

командного файла. Для этого надо поставить в начале этой строки символ «@». В част-

ности, можно избежать выдачи на экран команды echo off, поставив перед ней символ

iU1:!i ;. <;. 'Х
Пример
Пример
Команда rem позволяет включать в командный файл комментарии, которые не будут

интерпретироваться как команды во время исполнения этого файла. Они могут

употребляться для улучшения удобочитаемости командного файла. Если включен ре-

жим вывода исполняемых команд на экран, то комментарии выводятся на экран, а если

этот режим выключен командой echo off, то комментарии в командном файле на экран

не выводятся.
гепп любые-символы

rem Этот текст является комментарием
Перед комментариями, которые нежелательно выводить на экран даже при отладке

(при включенном режиме вывода выполняемых команд командного файла на экран),

целесообразно ставить символ «@».
@>rem Этот текст является комментарием
.;,1Л1,. «, и «;» Ч они

i;v(; «п» ст!)(1ки
Вынод сообщений

р. г^айл
echo сообщение
Сообщение, выдаваемое с помощью команды echo, выводится на экран даже тогда, ког-

да режим вывода исполняемых команд на экран выключен командой echo off. Сообще-

ние не может быть пустым или равным on или off, так как команды echo on и echo off

управляют режимом вывода исполняемых команд на экран, а команда echo без пара-

метров сообщает, включен или выключен режим echo.
.i.i’,:Ч «, и «!» Ч они

интерпретируются как символы перенаправления ввода-вывода DOS.
2. Перед командой echo сообщение желательно выполнить команду eecho off, чтобы

сообщение не выводилось на экран дважды.
С помощью команды echo можно получить звуковой сигнал компьютера. Для этого сле-

дует в сообщение, выводимое командой echo, включить символ с кодом 7. Это можно

сделать, нажав клавишу ГАТТ) и, не отпуская ее, клавишу Q в правой части клавиату-

ры (т.е. клавишу (Ноте)).
‘3. ti’. имя-файла Ч создание файла и запись в него строки с сообщением

(если такой файл уже существует, то его старое содержимое будет потеряно).
32
8. Приостановка выполн
ч-ч-и
I» ‘»»I /-. ч Х-«.? 1Л f

^’^сгвиях
Во время выполнения командного файла может возникнуть необходимость его приоста-

новки, например, для того, чтобы можно было поставить нужную дискету. Для этого

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

цифровую клавишу, СПробел^ или [Enter), выполнение командного файла будет продол-

жено. Если нажатьГ^Т?) (Т) или ( Ct rl) (Break), то будет выведено сообщение:

«Terminate batch job (Y/N)^» (Прервать выполнение командного файла, YЧда, NЧ

нет). Если ответить @, то выполнение командного файла будет окончено, а оставшие-

ся команды из командного файла будут проигнорированы. Если ответить (N), то выпол-

нение командного файла будет продолжено со следующей команды.
Перед выдачей команды pause полезно вывести сообщение о необходимых действиях:
echo Поставьте дискету DISK01 на дисковод А:

pause
32.9. Выполнение команды для набора ч)лйгю-л
.i’ii учение
Команда For позволяет выполнить программу или команду DOS для нескольких файлов

из указанного списка. Команда For может употребляться, в командных файлах, а также

непосредственно вводиться пользователем.
Примеры
for %х in (список) do команда
x Ч любой символ (кроме 0-9, чтобы не было смешения с параметрами командных
файлов %0-%9);

.употреблено %х, то оно заменяется именами файлов из списка.
При использовании команды For в командном файле вместо %х надо указывать °/о°/оХ

for Hf In (i.pas *.exe) do fc HHf a:Uf

for ИКС In (1 2 3456789 0) do copy Пс*.* d:
При наличии на диске длинных имен файлов или каталогов, сгенерированных в

Windows 95 или Windows NT, команда for по умолчанию не будет замечать эти имена,

а будет видеть (и выдавать) только соответствующие короткие имена. Однако в MS

DOS 7.0 Вы можете переключить команду for на работу с длинными именами. Для

этого перед командой for надо выдать команду LFNFOR ON. Для возврата к работе с

Источник

Как подавить подтверждение «Завершить пакетное задание (Y / N)»?

В cmd, когда мы нажимаем Ctrl + C, мы завершаем работу целевого приложения, но если целевое приложение вызывается из пакетного файла, мы получаем это подтверждение «Завершить пакетное задание (Y / N)». Я никогда не могу вспомнить случай, когда я решил не прерывать пакетное задание. Как мы можем пропустить это подтверждение?

AFAIK вы не можете, так как это поведение разработано и контролируется интерпретатором команд. Нет способа «отобразить» или даже «перехватить» это, если вы не декомпилируете и не перекомпилируете интерпретатор напрямую.

Нажмите Ctrl + C дважды.

На этом сайте я нашел эффективное решение:

Чтобы не приходилось печатать это каждый раз, я создал второй скрипт, который вызывался script.cmd в той же папке, что и строка выше. Я тестировал эту технику только на XP, но другие подтвердили ее на Win 7.

Это тогда «просто работает» с любым окном cmd.exe. Вам не нужно изменять то, что работает или что-то иное, так как кликните копилки на cmd.exe.

Если вам не нужно ничего делать в пакетном файле после нормального завершения приложения, то использование start команды гарантирует, что пакетный файл уже завершен к тому времени, когда вы нажимаете Ctrl-C. И, следовательно, сообщение не появится.

(Проверено на Windows XP.)

Я боролся с этим желанием на некоторое время избежать приглашения «Завершить пакетную работу».

Рассмотрим следующий пример, traceroute который может быть прерван Ctrl + C или разрешен для завершения, возвращая пользователя к C:\> приглашению:

Замена окружения на новый командный интерпретатор может быть не для всех, но, на мой взгляд, выглядит и работает хорошо для меня.

Вот модификация, с которой я закончил:

Тем не менее, исправление cmd.exe не то, что я бы сделал для этого.

В моем случае именно файл ping.bat, который находился прямо в моем пользовательском каталоге (C: \ Users \ в Vista или C: \ Documents and Settings \ в XP), неопределенно удерживал пакетное задание.

Этот пакетный файл выполнялся всякий раз, когда я запускал ping из командной строки, где текущим каталогом является мой пользовательский каталог. Пинг из окна «Выполнить» или из каталога другого пользователя работал нормально.

Удалил файл из моего пользовательского каталога, и проблема была решена!

Пуск работает, но теперь окно, открытое командным файлом, изменилось по сравнению с опциями, которые у меня были, и «свойства» отключены (не отвечает).

Просто перенаправьте пакетный стандартный ввод в ноль, добавив — Il Cognato
источник

Я столкнулся с этим с EXE-файлом, который, казалось, выдавал ^ C родительскому пакету при выходе, вызывая запрос «Завершить пакетное задание» даже при чистом выходе.

Решением, которое я выбрал, было запускать пакет с «Пуск», аналогично другим ответам, но из приглашения PowerShell (или, если хотите, с помощью метода интерпретатора PowerShell из CMD).

Сейчас 2018 год, и в Windows 10 Microsoft начала вытеснять CMD с PowerShell в качестве предпочтительной командной строки, поэтому по умолчанию она легко доступна в графическом интерфейсе.

При запуске просто запускается и возвращается. Поэтому, когда вы останавливаете запущенный процесс, подсказка «Завершить пакетное задание» отсутствует.

По умолчанию он не ждет, поэтому никаких дополнительных аргументов помимо команды и ее аргументов не требуется.

Отмена пакетного файла на Ctrl-C : Отмена обработки пакетного файла без обычной подсказки при нажатии Control-C.

terminate batch job y n что это. Смотреть фото terminate batch job y n что это. Смотреть картинку terminate batch job y n что это. Картинка про terminate batch job y n что это. Фото terminate batch job y n что это

Если вы никогда раньше не слышали о TCC / LE, вот несколько замечаний с сайта:

TCC / LE работает с вашими существующими приложениями командной строки и пакетными файлами, но предлагает значительные улучшения в возможностях командной строки и пакетных файлов и добавляет тысячи новых функций в окна командной строки.

Я использовал TCC / LE в течение многих лет и 4NT до этого. Я очень люблю это и могу рекомендовать это. Единственная причина, по которой я до сих пор не использую его, заключается в том, что я почти исключительно использую PowerShell сейчас.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *