/bin/sh에서 이 작업을 수행하는 방법을 알고 있지만 Windows에서는 약간 어려움을 겪고 있습니다.
나는 당신이 32비트 부호 있는 정수에 대해 산술을 할 수 있다는 것을 알고 있습니다.
SET /a 2+2
4
하지만 이것을 다음 명령에 어떻게 전달합니까? 예를 들어, 내가 수행하려는 프로세스는 다음과 같습니다.
소비자용 Windows 버전에는 기본 자동 절전 기능이 없습니다. (제 생각에는요?) 절전을 수행하는 가장 좋은 방법은 스위치 PING
와 함께 사용하여 -n
1초를 뺀 수초의 절전 모드를 얻는 것입니다. 다음 명령은 자동 절전 모드에 효과적입니다.
PING localhost -n 3 > NUL
하지만 저는 이것을 수면 명령으로 별칭으로 지정하고 싶습니다. 명령 후에 잠들고 싶은 실제 시간(초)을 입력할 수 있도록 우아하게 만들고 싶습니다. 지금 당장 할 수 있습니다.
DOSKEY SLEEP=PING 127.0.0.1 -n $1 > NUL
작동하지만 항상 입력보다 1초 적으므로 1초 동안 잠을 자려면 명령을 사용해야 합니다 SLEEP 2
. 그것은 정확히 이상적이지 않습니다.
$1+1
Windows에서 산술 연산을 전달하고 이를 다음 명령에 전달할 수 있는 방법이 있습니까 ? STDOUT을 사용하는 방법이 있다고 가정합니다 ...
답변1
이것을 시도해 보십시오:
DOSKEY SLEEP==set /a t=$1+1 $G NULL $T PING 127.0.0.1 -n %t% $G NULL
는 $T
와 동일한 명령 구분 기호입니다 &
.
매크로가 아닌 의 > NUL
출력을 리디렉션합니다 . DOSKEY
그렇게 하면 포함되지 않은 것을 볼 수 있습니다 DOSKEY /MACROS
. 원하는 리디렉션을 수행하려면 $G NUL
위에 표시된 대로 줄 끝에 추가하세요.
다음과 같은 것도 작동합니다.
DOSKEY SLEEP=for /f %t in ('set /a $1+1') do @PING 127.0.0.1 -n %t $G NUL
둘 다 시도해보고 어느 것이 더 나은지 확인하십시오.
답변2
내가 아는 한 cmd.exe는 실행 중 기능 평가를 위해 쉽게 사용할 수 있는 기능을 제공하지 않습니다.
1초만 더 기다리려면 여기에 ping -n 2 127.0.0.1을 추가하면 됩니다.
다음에서 sleep 명령 설치를 고려할 수 있습니다.Windows 서버 관리 도구.
cygwin/powershell 설치는 어떻습니까?
편집: 내 핑 매개변수의 어리석음을 수정하세요