Solved: Run chkdsk.exe via command line without getting yes or no prompt?
How do I make it run in -dev mode if the answer is yes, and regular mode if the answer is no. Also, how do I make it ask again if the input isn't Y, N, y, or n?
That is, you are comparing N with "y"then "n" etc. You are never going to get a match unless the user somehow decides to input "N" or "y" i. I would recommend the latter, because that way you would be escaping at least some of the characters that have special meaning in batch scripts if the user managed to type them in.
So, this is what you should get:. One other issue is that, after the development mode command is executed, there's no jumping over the other command, and so, if the user agrees to run Java in the development mode, he'll get it run both in the development mode and the non-development mode.
So maybe you need to add something like this to your script:. Finally, to address the issue of processing incorrect input, you could simply add another unconditional goto command just after the conditional statements, just before the yes label, namely goto Askto return to the beginning of your script where the prompt is displayed and the input is requested, or you could also add another ECHO command before the jump, explaining that the input was incorrect, something like this:.
Note: Some of the issues mentioned here have also been addressed by xmjx in their answer, which I fully acknowledge. I have improved batch file with yes or no prompt. If user enter any character except y and nthen it will again prompt user for valid input. It Works for me. This is code I use regularly. I have noticed in the examples in this blog that quotes are used.
If the test line is changed to use quotes the test is invalid. Also I don't have a way to check this but this seems like the batch processor skips the If lines due to some errors and then executes the one with -dev.
You could try this by chaning the two jump targets :yes and :no along with the code. If then the line without -dev is executed you know your If lines are erroneous.
Depending on the version of Windows you might find the use of the "Choice" option to be helpful. It is not supported in most if not all x64 versions as far as I can tell. A handy substitution called Choice. Learn more. How do I request and receive user input in a. Ask Question.Make a bat file only accept yes or no or a answer
Asked 7 years, 7 months ago. Active 7 months ago. Viewed k times. This is what I have so far echo off :Ask echo Would you like to use developer mode? Qiu 4, 10 10 gold badges 39 39 silver badges 50 50 bronze badges.
Jonathan Beaudoin Jonathan Beaudoin 2, 4 4 gold badges 19 19 silver badges 54 54 bronze badges.Need support for your remote team? Check out our new promo! IT issues often require a personalized solution. Why EE?
Get Access. Log In. Web Dev. NET App Servers. We help IT Professionals succeed at work. BigDog asked. Medium Priority. Last Modified: I'm working on making a bootable disc for myself.
Cause I want a yes or no answer for the given software. Example: Program:Do you want to install adware? Program: installing adware Program:Do you want to install adware? Start Free Trial. View Solution Only. Top Expert This award recognizes someone who has achieved high tech and professional accomplishments as an expert in a specific topic.
Commented: Assuming you are using a MS Windows based system Should solve it, but feel free to reply with quiries. Author Commented: Falcon Zero. I think you gave me what I wanted.I have a Windows. For example, I'd like to accept a process ID from the user, and then run jstack against that ID, putting the results of the jstack call into a file.
Bash Script – Prompt to Confirm (Y/N, YES/NO)
However, when I try this, it doesn't work. Dollar signs around the variable do not work on my Vista machine, but percent signs do. Also note that a trailing space on the "set" line will show up between the prompt and user input. I have a little cmd I use when preparing pc to clients: it calls the user for input, and the rename the pc to that.
It now shows me the location I respond as the point for that sample. Looking for clear air, I can eavulate the lowest use channels and whether there are 5 or just all 2.
You did put it in the code and forgot to tell us in the question but when you ran the batch file you hit the Enter key instead of typing an ID say What's happening is the result of these two mistakes: jstack is supposed to be called with the id that you supply it.
But in your case according to the code you supplied in the question you called it without any variable. You wrote:. Your second mistake is that you pressed Enter instead of giving a value when the program asked you: Enter ID:.
But you did NOT supply a value and instead pressed Enter. Jstack itself echoed the input, encountered a mistake and asked to terminate. And all this was written into the jstack. In Windows cmd, how do I prompt for user input and use the result in another command? ECHO "remember to run this as admin. Once you have set your variable, you can then go about using it in the following fashion. There are two possibilities. How can I develop for iPhone using a Windows development machine?
How can I pass arguments to a batch file? How can you find out which process is listening on a port on Windows? Windows batch files:. Is there an equivalent of 'which' on the Windows command line?The recent September disclosure of a command insertion vulnerability for command-shell scripts batch filesby The Security Factorymade it painfully clear that batch files can be vulnerable to exploits. Batch files are extremely "weakly typed" to use the understatement of the millennium : everything is a string, and a string can be everythingcommand as well as data, or even both, and there is no way to distinguish between the two.
This makes batch code insertion more than a potential threat. To start with the bad news: as far as I know, there is no fool-proof command line input validation. As the table above shows, the weak point of input validation is with "quotes within", a. Combining these with ampersands is a recipe for disaster.
Though the command line interpreter CMD. EXE does its best to try and interpret doublequotes, it can easily be fooled. Even if it doesn't allow cross-scripting so far, it may still cause the batch file to terminate with an error. Try again, with the entire line in doublequotes, i. Try other "randomly" inserted doublequotes, use more arguments, combine them with ampersands, and see if you can successfully predict the results Note: Try test1 "test2 ; if an opening doublequote is not terminated by a closing doublequote "test2 in this exampleCMD.
EXE will just assume a doublequote at the end of the command line.
Windows Batch Files for Fun and Profit
It may be clear from the demonstration above that it is hard, if possible at all, to completely prevent code insertion in batch files. Instead of passing arguments on the command lineyou can present them in a parameter file instead. For those of you who have been around for quite a while: yes, like INI files, but without the section headers. Though not as flexible as command line arguments, text files can be tested for unwanted content much easier.
You can escape them if hard coded in the batch file, but for "free" input this is a pain in the Using a parameter file instead of command line arguments may be feasible for configuration parameters, but it may prove to be rather impractical for "free" user input.
If you really do need those ampersands, singlequotes and doublequotes, or if you must ask for user input, consider using "stronger" scripting languages like VBScript or, even safer because it has stronger typingPowerShell. The validation methods shown in the table are all case in sensitive.
FIND returns an ErrorLevel 1 if "test string" isn't found in the input, or 0 if it is if the test string is equal to the input, but also if the test string is part of the input. Characters that may be "misinterpreted" for delimiters are, besides whitespace: commas, semicolons and equal signs. The reason to choose this notation instead of a character class?I put together a "mass shutdown" batch script for a bunch of our computers.
Of course it will be tucked away so the chances of it accidentally being executed are minimized. However, I would like it to require extra, extra steps to actually execute.
Basically at the beginning of the script, I want it to prompt the user to continue. But in addition to a typical "Do you wish to proceed? It needs to say "You have answered 'Yes'. How is this done? If it doesn't just remove the ELSE don't really need it anyway. No, the way I suggested writing it above isn't working. I thought unless the match was exact at the IF statement it would fail which is why I put in a statement for both uppercase and lowercase 'y'.
Why doesn't this script behave that way? Is that just not even possible in. What's happening is the ELSE isn't valid so it's dropping to the next line instead of jumping to the location you want.
The IF statements appear to be useless lol! I typed in lots of n's and then at the second prompt typed in a bunch of other garbage. It still went through the Begin statements. Script has a default array of computers it will reboot line 2 but you can also specify, and you can do the first confirm in the command line, but you will always have to do the firm confirm:.
You'll want to remove the -whatif on the restart-computer line when it's ready for production. Is it just me, or is batch script logic just not at all intuitive? When you say you don't get what's happening, which part are we talking about?
I'd be happy to run through the logic for you but don't want to insult you by going over something you already get :. Wanted to give some additional functionality to the Powershell script, so added the ability to specify a file that has a list of computers in it.
Think I might post this in the ScriptCenter after I put some proper documentation around it:. I misunderstood what you said here.
I didn't realize you had made changes with it there lol! And then in the follow-up post you explained that when an IF statement comes back true, it does not continue with code on that line but instead goes to the next line.
I removed the whole line instead of just deleting ELSE.This is a very useful part to know if a user wants to proceed with the remaining steps for not. You can also add the same function to your script. This example code will prompt for confirming once if you give wrong input, the program will exit with status 1.
The below example code will accept only Y or n or yes or no Not case-sensitive. If you give the wrong input, it will again prompt for correct input and repeat the same steps. I, Rahul Kumar am the founder and chief editor of TecAdmin. In the 2nd example.
This — is incorrect. Save my name, email, and website in this browser for the next time I comment. Search for: Search. Share on Facebook. Share on Twitter. Share on LinkedIn. Share on Reddit.
Share on Tumblr. Share on Whatsapp. Rahul Connect on Facebook Connect on Twitter. Related Posts September 27, June 7, at am. December 16, at am. It goes to infite loop.
March 28, at pm. Thanks for your page, but there is a bug here — This — is incorrect. Rahul K. Reply to Rahul to Rahul K.
Join our site today to ask your question. This site is completely free -- paid for by advertisers and donations. If you're not already familiar with forums, watch our Welcome Guide to get started. Join overother people just like you! Log in or Sign up. Tech Support Guy. Computer problem? Tech Support Guy is completely free -- paid for by advertisers and donations. Click here to join today! Solved: Run chkdsk. Joined: Jul 7, Messages: 7, Is there any such way to do this?