cmd: cmd.exe /c or /k should suppress copy overwrite prompts.
This commit is contained in:
parent
6d948e1a8c
commit
b1dacc6c37
|
@ -36,6 +36,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(cmd);
|
|||
|
||||
extern int defaultColor;
|
||||
extern BOOL echo_mode;
|
||||
extern BOOL interactive;
|
||||
|
||||
struct env_stack *pushd_directories;
|
||||
const WCHAR dotW[] = {'.','\0'};
|
||||
|
@ -446,7 +447,7 @@ void WCMD_copy (void) {
|
|||
else {
|
||||
/* By default, we will force the overwrite in batch mode and ask for
|
||||
* confirmation in interactive mode. */
|
||||
force = !!context;
|
||||
force = !interactive;
|
||||
|
||||
/* If COPYCMD is set, then we force the overwrite with /Y and ask for
|
||||
* confirmation with /-Y. If COPYCMD is neither of those, then we use the
|
||||
|
|
|
@ -1816,8 +1816,94 @@ goto :eof
|
|||
:endlocalfinished
|
||||
echo %var%
|
||||
|
||||
set var=
|
||||
set var2=
|
||||
cd .. & rd /q/s foobar
|
||||
|
||||
echo ------------ cmd.exe command lines ------------
|
||||
mkdir foobar
|
||||
cd foobar
|
||||
echo file1 > file1
|
||||
|
||||
rem Basic test of command line. Note a section prefix per command
|
||||
rem to resync, as wine does not output anything in these cases yet.
|
||||
echo --- Test 1
|
||||
cmd.exe /c echo Line1
|
||||
echo --- Test 2
|
||||
cmd.exe /c echo Test quotes "&" work
|
||||
echo --- Test 3
|
||||
cmd.exe /c echo "&"
|
||||
echo --- Test 4
|
||||
cmd.exe /c echo "<"
|
||||
echo --- Test 5
|
||||
cmd.exe /c echo ">"
|
||||
echo --- Test 6
|
||||
cmd.exe /c echo "\"
|
||||
echo --- Test 7
|
||||
cmd.exe /c echo "|"
|
||||
echo --- Test 8
|
||||
cmd.exe /c echo "`"
|
||||
echo --- Test 9
|
||||
cmd.exe /c echo """
|
||||
echo --- Test 10
|
||||
echo on > file3
|
||||
@type file3
|
||||
@echo off
|
||||
echo --- Test 11
|
||||
cmd.exe /c echo on >file3
|
||||
@type file3
|
||||
@echo off
|
||||
echo --- Test 12
|
||||
cmd.exe /c "echo passed1"
|
||||
echo --- Test 13
|
||||
cmd.exe /c " echo passed2 "
|
||||
echo --- Test 14
|
||||
cmd.exe /c "dir /ad ..\fooba* /b"
|
||||
echo --- Test 15
|
||||
|
||||
rem Ensure no interactive prompting when cmd.exe /c or /k
|
||||
echo file2 > file2
|
||||
cmd.exe /c copy file1 file2 >nul
|
||||
echo No prompts or I would not get here1
|
||||
rem - Try cmd.exe /k as well
|
||||
cmd.exe /k "copy file1 file2 >nul && exit"
|
||||
echo No prompts or I would not get here2
|
||||
|
||||
rem Non existing variable expansion is as per command line, ie left as-is
|
||||
cmd.exe /c echo %%hello1%%
|
||||
cmd.exe /c echo %%hello2
|
||||
cmd.exe /c echo %%hello3^:h=t%%
|
||||
cmd.exe /c echo %%hello4%%%%
|
||||
|
||||
rem Cannot issue a call from cmd.exe /c
|
||||
cmd.exe /c call :hello5
|
||||
|
||||
rem %1-9 has no meaning
|
||||
cmd.exe /c echo one = %%1
|
||||
|
||||
rem for loop vars need expanding
|
||||
cmd.exe /c for /L %%i in (1,1,5) do @echo %%i
|
||||
|
||||
rem goto's are ineffective
|
||||
cmd.exe /c goto :fred
|
||||
cmd.exe /c goto eof
|
||||
|
||||
rem - %var% is expanded at read time, not execute time
|
||||
set var=11
|
||||
cmd.exe /c "set var=22 && setlocal && set var=33 && endlocal && echo var contents: %%var%%"
|
||||
|
||||
rem - endlocal ineffective on cmd.exe /c lines
|
||||
cmd.exe /c "set var=22 && setlocal && set var=33 && endlocal && set var"
|
||||
set var=99
|
||||
|
||||
rem - Environment is inherited ok
|
||||
cmd.exe /c ECHO %%VAR%%
|
||||
|
||||
rem - Exit works
|
||||
cmd.exe /c exit
|
||||
|
||||
cd ..
|
||||
rd foobar /s /q
|
||||
echo ------------ Testing Errorlevel ------------
|
||||
rem WARNING: Do *not* add tests using ErrorLevel after this section
|
||||
should_not_exist 2> nul > nul
|
||||
|
|
|
@ -907,6 +907,49 @@ value1
|
|||
2
|
||||
1
|
||||
1
|
||||
------------ cmd.exe command lines ------------
|
||||
--- Test 1
|
||||
Line1
|
||||
--- Test 2
|
||||
@todo_wine@Test quotes "&" work
|
||||
--- Test 3
|
||||
@todo_wine@"&"
|
||||
--- Test 4
|
||||
@todo_wine@"<"
|
||||
--- Test 5
|
||||
@todo_wine@">"
|
||||
--- Test 6
|
||||
@todo_wine@"\"
|
||||
--- Test 7
|
||||
@todo_wine@"|"
|
||||
--- Test 8
|
||||
@todo_wine@"`"
|
||||
--- Test 9
|
||||
@todo_wine@"""
|
||||
--- Test 10
|
||||
--- Test 11
|
||||
--- Test 12
|
||||
@todo_wine@passed1
|
||||
--- Test 13
|
||||
@todo_wine@passed2@space@
|
||||
--- Test 14
|
||||
@todo_wine@foobar
|
||||
--- Test 15
|
||||
No prompts or I would not get here1
|
||||
No prompts or I would not get here2
|
||||
%hello1%
|
||||
%hello2
|
||||
%hello3:h=t%
|
||||
%hello4%%
|
||||
one = %1
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
@todo_wine@var contents: 11
|
||||
var=33@space@
|
||||
99
|
||||
------------ Testing Errorlevel ------------
|
||||
9009
|
||||
1
|
||||
|
|
|
@ -39,6 +39,7 @@ extern struct env_stack *pushd_directories;
|
|||
BATCH_CONTEXT *context = NULL;
|
||||
DWORD errorlevel;
|
||||
WCHAR quals[MAX_PATH], param1[MAXSTRING], param2[MAXSTRING];
|
||||
BOOL interactive;
|
||||
|
||||
int defaultColor = 7;
|
||||
BOOL echo_mode = TRUE;
|
||||
|
@ -2366,6 +2367,9 @@ int wmain (int argc, WCHAR *argvW[])
|
|||
WCMD_echo(eoff);
|
||||
}
|
||||
|
||||
/* Until we start to read from the keyboard, stay as non-interactive */
|
||||
interactive = FALSE;
|
||||
|
||||
if (opt_c || opt_k) {
|
||||
int len,qcount;
|
||||
WCHAR** arg;
|
||||
|
@ -2625,7 +2629,8 @@ int wmain (int argc, WCHAR *argvW[])
|
|||
*/
|
||||
|
||||
SetEnvironmentVariableW(promptW, defaultpromptW);
|
||||
WCMD_version ();
|
||||
interactive = TRUE;
|
||||
if (!opt_k) WCMD_version ();
|
||||
while (TRUE) {
|
||||
|
||||
/* Read until EOF (which for std input is never, but if redirect
|
||||
|
|
Loading…
Reference in New Issue