기 타 cmd스크립트 짜는데 왜이리 안되는지 도음좀 부탁드립니다 ㅠㅠ
2024.03.20 23:11
rem @echo off
set line=first
for /f "usebackq skip=1" %%i in (`wmic useraccount where name^='%%USERNAME%%' get sid`) do (
if %line% EQU first (set SID=%%i)
set line=no
)
@echo SID : %SID%
위처럼 윈도우 로그온된 SID를 따와서 변수 안에 집어넣을려고 하는데 뭔삽질을 해도 안되네요
wmic useraccount where name^='%%USERNAME%%' get sid 의 결과물은
3줄인데 첫번째줄은 제목행이고 두번째줄이 SID이고 3번째줄은 빈줄 입니다.
skip을 써서 첫번재줄 날리고 if문 으로 3번째 빈줄 날리기 위해 저렇게 짰는데
어떤 삽질을 다해봐도 최종결과물은 비어 있습니다.
댓글 [4]
-
라랑 2024.03.20 23:32
-
무월 2024.03.20 23:33
ChatGPT에게 올바르게 작동 되도록 수정을 요청했습니다. ㅡㅅㅡ;;;
@echo off
setlocal enabledelayedexpansion
set line=first
for /f "usebackq skip=1" %%i in (`wmic useraccount where name^='%USERNAME%' get sid`) do (
if "!line!"=="first" (
set SID=%%i
set "line=no"
)
)
echo SID : %SID%
pause
-
입니다 2024.03.21 06:01
@echo off
echo.
:G1
echo "1번"
FOR /f "tokens=1,2 delims==" %%A in ('wmic useraccount where name^="%USERNAME%" get sid /value') do (
If /i "%%A" equ "SID" Set "SID1=%%B" & GOTO :G2
Echo %%A)
:G2
echo.
echo "2번"
FOR /f %%A in ('wmic useraccount where name^="%USERNAME%" get sid ^| Find "-"') do (
Set "SID2=%%A" & GOTO :G3
Echo %%A)
:G3
echo.
echo "3번"
set /a Count=0
FOR /f %%A in ('wmic useraccount where name^="%USERNAME%" get sid') do CAll :GetLine %%A
GOTO :R123
:GetLine
set /a Count+=1
If "%Count%" equ "2" Set "SID3=%1" & GOTO :R123
echo %Count% %1
Exit /B
:R123
echo.
echo "결과"
echo "1번" %SID1%
echo "2번" %SID2%
echo "3번" %SID3%
:G4
echo.
echo "4번"
set /a Count=0
setlocal enabledelayedexpansion
FOR /f %%A in ('wmic useraccount where name^="%USERNAME%" get sid') do (
set /a Count+=1
If "!Count!" equ "2" Set "SID4=%%A" & echo "4번1" !SID4!
If defined SID4 GOTO :R4
echo !Count! %%A)
:R4
echo "4번2" %SID4%
endlocal
echo "4번3" %SID4%
:FInish
pause
-
일상다반사 2024.03.25 12:36
도움 주신 모든 분들께 감사드립니다.
덕분에 잘해결 되었습니다.
배치파일 스크립트가 생각보다 복잡하네요 ㅠㅠ
@echo off
for /f "tokens=2 delims== " %%a in ('wmic useraccount where "name='%username%'" get sid /value') do (
echo SID: %%a
)
pause
--------------- 아 꺼내서 쓰셔야 되니까 이게 아니겠군여 죄송합니다.
이럴땐 어쩔수 없이 goto 쓰기 싫지만 언능 튀어야 되더라구요; 배치에서 for문의 특징인듯
@echo off
setlocal enabledelayedexpansion
for /f "tokens=2 delims== " %%a in ('wmic useraccount where "name='%username%'" get sid /value') do (
set "SID=%%a"
goto :TTT
)
:TTT
echo SID: %SID%
pause