Я пытаюсь создать скрипт, который должен заполнить 3 пробела в одной строке.Возможно ли это?
Например, заполнение даты: 25/02/2019
таким образом: day here / month here / year here
Не построчно.
Обычный способ таков:
set /p "dd=Type the Day: "
set /p "mm=Type the Month: %dd% / "
set /p "aa=Type The Year: %dd% / %mm% / "
И результат будет: 22/05/2019
Но я хочу поместить эти 3 set /p
в одну строку, заполняя только эту строку.
Iпробовал так:
set dd=%%a
set mm=%%b
set aa=%%c
set /p "test= "!dd! !mm! !aa!
echo %%a / %%b / %%c
pause
тоже пробовал:
set /p "dd=Type the day: " / &set /p "mm=Type the month " &set /p "aa=Type the year "
но, к сожалению, не сработало.Второй способ работал построчно.
Редактировать 1:
Следуйте моему последнему сценарию, чтобы изменить дату Windows с помощью пакетной команды:
@echo off
setlocal enableextensions
setlocal EnableDelayedExpansion
cd /d "%~dp0"
mode 42,12
:begin
cls
echo ------------------------------------------
echo MUDAR A DATA DO WINDOWS
echo ------------------------------------------
echo( &echo(
echo 1 - Escolher a data & echo( &echo 2 - Retornar para a data atual
echo( & echo( &echo(
choice /n /c:12 /m "Digite uma op‡Æo:"%1
call :lab%errorlevel%
:lab 1
cls
for /F %%a in ('echo prompt $H ^| cmd') do set "BS=%%a"
for /F %%a in ('copy /Z "%~F0" NUL') do set "CR=%%a"
set /P "=Digite a data: / / !CR!Digite a data: " < nul
call :GetDigits 2 3 Day=
set /P "=.%BS% / " < nul
call :GetDigits 2 1 Mon=
set /P "=.%BS% / " < nul
call :GetDigits 4 2 Year=
echo/
echo/
net stop w32time >nul 2>nul
sc config w32time start= disabled >nul 2>nul
date %Day%-%Mon%-%Year% <nul && (
echo Data modificada: %Day%/%Mon%/%Year%
timeout /nobreak /t 2 >nul 2>nul
goto begin
) || (
cls & echo Erro ao mudar a data.
echo( &echo( &echo(
pause
goto begin
)
:GetDigits HowMany FirstLimit Result=
setlocal EnableDelayedExpansion
set "digits=123456789"
set "%3="
choice /C "0!digits:~0,%2!" /N > nul
set /A digit=%errorlevel%-1
set /P "=%digit%" < nul
set "%3=!%3!%digit%"
for /L %%i in (2,1,%1) do (
choice /C "0%digits%" /N > nul
set /A digit=!errorlevel!-1
set /P "=!digit!" < nul
set "%3=!%3!!digit!"
)
for %%a in (!%3!) do endlocal & set "%3=%%a"
exit /B
:lab2
sc config w32time start= demand >nul
net start w32time >nul 2>nul
cls & w32tm /resync >nul 2>&1
echo Data atual retornada.
timeout /nobreak /t 2 >nul 2>nul
cls & goto begin