산술을 수행하여 다음 명령으로 전달

산술을 수행하여 다음 명령으로 전달

/bin/sh에서 이 작업을 수행하는 방법을 알고 있지만 Windows에서는 약간 어려움을 겪고 있습니다.

나는 당신이 32비트 부호 있는 정수에 대해 산술을 할 수 있다는 것을 알고 있습니다.

SET /a 2+2
4

하지만 이것을 다음 명령에 어떻게 전달합니까? 예를 들어, 내가 수행하려는 프로세스는 다음과 같습니다.

소비자용 Windows 버전에는 기본 자동 절전 기능이 없습니다. (제 생각에는요?) 절전을 수행하는 가장 좋은 방법은 스위치 PING와 함께 사용하여 -n1초를 뺀 수초의 절전 모드를 얻는 것입니다. 다음 명령은 자동 절전 모드에 효과적입니다.

PING localhost -n 3 > NUL

하지만 저는 이것을 수면 명령으로 별칭으로 지정하고 싶습니다. 명령 후에 잠들고 싶은 실제 시간(초)을 입력할 수 있도록 우아하게 만들고 싶습니다. 지금 당장 할 수 있습니다.

DOSKEY SLEEP=PING 127.0.0.1 -n $1 > NUL

작동하지만 항상 입력보다 1초 적으므로 1초 동안 잠을 자려면 명령을 사용해야 합니다 SLEEP 2. 그것은 정확히 이상적이지 않습니다.

$1+1Windows에서 산술 연산을 전달하고 이를 다음 명령에 전달할 수 있는 방법이 있습니까 ? 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

  1. 내가 아는 한 cmd.exe는 실행 중 기능 평가를 위해 쉽게 사용할 수 있는 기능을 제공하지 않습니다.

  2. 1초만 더 기다리려면 여기에 ping -n 2 127.0.0.1을 추가하면 됩니다.

  3. 다음에서 sleep 명령 설치를 고려할 수 있습니다.Windows 서버 관리 도구.

  4. cygwin/powershell 설치는 어떻습니까?

편집: 내 핑 매개변수의 어리석음을 수정하세요

관련 정보