CMD/windows Batch: how to pass a double quote and a larger than sign in a command argument? - Printable Version +- 0Day Forums (https://0day.red) +-- Forum: Coding (https://0day.red/Forum-Coding) +--- Forum: .bat & .wsf & .cmd (https://0day.red/Forum-bat-wsf-cmd) +--- Thread: CMD/windows Batch: how to pass a double quote and a larger than sign in a command argument? (/Thread-CMD-windows-Batch-how-to-pass-a-double-quote-and-a-larger-than-sign-in-a-command-argument) |
CMD/windows Batch: how to pass a double quote and a larger than sign in a command argument? - fanlights671555 - 07-23-2023 I can pass a double quote, and a larger than sign to any command in several ways: `'"'`, `"\""`, `">"` But when i try to pass them together C:\>echo "\">" The system cannot find the path specified. Same with `"\"\>"`. I could make it work with single quotes around, but since i already have so much going on with dealing with quotes i'd like to keep it all inside double quotes. Is there any way to escape that? I'm on windows7 but i believe this is some backward compatibility 'feature', so not sure this info is relevant. Edit 1: I tought Endoro had the right answer... but it's not that simple. CMD treats `^>` differently depending if there's a escaped double quote in the string. Anyone have any idea why?! or a different escaping method? C:\>sh echo "\"^>" "> C:\>sh echo "a^>" a^> C:\>echo "\"^>" "\">" C:\>echo "a^>" "a^>" Edit 2: here are the tests cases for what Monacraft suggested, using `^` before the quotes that go around the string C:\>echo ^"a/>" The system cannot find the path specified. (we still need to escape that > symbol) C:\>echo ^"a/^>" "a/>" (work fine without \" in the string) C:\>echo ^"\"/^>" "\"/^>" (add a single \" and the ^> escaping stop to works) C:\>echo ^""/^>" ""/^>" (ok, using ^ before the string means i dont have to escape the " anymore) C:\>echo ^"^\"/^>" "\"/^>" (but what if i have an actual \" in my input that i have to escape... would ^\ prevent this from happening? nope) RE: CMD/windows Batch: how to pass a double quote and a larger than sign in a command argument? - hays174 - 07-23-2023 OK, I can't give you a full explanation, but if you put an escape character before the double quotes it works: C:\>echo "a^>" "a^>" C:\>echo ^"a^>" "a>" I think by putting a `^` before the string, your telling cmd not to treat a `^` inside the string as part of the actual string. Which is why: C:\>echo "text^>" ^"text^>" "text^>" "text>" Does that. However, I can't give you a full explanation, but at least that solves your problem. ### Edit 2: ### Ok, for edit 2 All I can say is that you don't need to escape anything inside the string! C:\>echo ^"\"/>" "\"/>" Also found this website which explained that to escape a `\` all you need is `\\`. [Click here][1] for more Information. For `"` simply double up the quotes (`""`). [1]: [To see links please register here] |