2009-06-04 36 views

Trả lời

10
@echo off & setlocal 
:: Supports curl, wget, plink, and nc 

set SoUID=YOUR UID HERE 
:: Example: set SoUID=49849 
set SoHost=stackoverflow.com 

set FlairPath=/users/flair/%SoUID%.json 
set FlairURL=http://%SoHost%%FlairPath% 
set TempTag=%SoHost%-%SoUID%-%random% 
set TempFile=%TEMP%\%TempTag%.json 
set Script=%TEMP%\%TempTag%.script 
set RawOut=%TEMP%\%TempTag%.out 

call :Check curl 
if not "%App%"=="" "%App%" -o "%TempFile%" -s "%FlairURL%" & goto :Next 

call :Check wget 
if not "%App%"=="" "%App%" -O "%TempFile%" -q "%FlairURL%" & goto :Next 

call :Check plink 
if not "%App%"=="" call :MakeScript & "%App%" -raw %SoHost% -P 80 -batch "%RawOut%" & goto :NextHdr 

call :Check nc 
if not "%App%"=="" call :MakeScript & "%App%" %SoHost% 80 "%RawOut%" & goto :NextHdr 

>&2 echo curl, wget, plink or netcat not found. Downloading plink from PuTTY site. 
set App=%TEMP%\plink.exe 
call :Mirror ftp.chiark.greenend.org.uk /users/sgtatham/putty-latest/x86/plink.exe 
if not exist "%App%" call :Mirror ftp.samurai.com /pub/putty/putty-latest/x86/plink.exe 
if not exist "%App%" call :Mirror ftp.totem.fix.no /pub/mirrors/putty/putty-latest/x86/plink.exe 
if not exist "%App%" call :Mirror ftp.ds5.agh.edu.pl /pub/putty/putty-latest/x86/plink.exe 
if not exist "%App%" goto :NoApp 
call :MakeScript & "%App%" -raw %SoHost% -P 80 -batch "%RawOut%" & del "%App%" & goto :NextHdr 
:Mirror 
if exist "%App%" del "%App%" 
> "%Script%" echo=lcd "%TEMP%" 
>>"%Script%" echo=binary 
>>"%Script%" echo=get %~2 
>>"%Script%" echo=bye 
ftp -s:"%Script%" -A -v -i %~1 > nul 2> nul 
goto :EOF 
:NextHdr 
for /f "usebackq tokens=1,* delims=:" %%a in ("%RawOut%") do (
    if [%%a]==[{"id"] set Flair=%%a:%%b & del "%Script%" "%RawOut%" & goto :Next2 
) 
:NoApp 
>&2 echo Giving up. & goto :EOF 
:Next 
if not exist "%TempFile%" echo Error downloading data. & goto :EOF 
set /p Flair=&2 echo Something went bad. 
) else (
    if "%SoName%"=="" (
     echo Your reputation is %SoReputation%. 
    ) else (
     echo Reputation of %SoName% is %SoReputation%. 
    ) 
) 
goto :EOF 
:Parse 
if "%~1"=="" goto :EOF 
set Line=%~1 
shift 
if /i "%Line:~0,11%"=="reputation:" (
    set SoReputation=%Line:~11% 
    goto :Parse 
) 
if /i "%Line:~0,12%"=="displayName:" (
    set SoName=%Line:~12% 
    goto :Parse 
) 
goto :Parse 
:Check 
set App= 
for %%e in (%PATHEXT%) do for %%i in (%1%%e) do if NOT "%%~$PATH:i"=="" set App=%%~$PATH:i 
goto :EOF 
:MakeScript 
> "%Script%" echo=GET %FlairPath% HTTP/1.1 
>>"%Script%" echo=Host: %SoHost% 
>>"%Script%" echo=Connection: close 
>>"%Script%" echo= 
goto :EOF 
+2

Đây là một ví dụ rất hay về cách powerhell cải thiện cửa sổ dòng lệnh script – eKek0

3

Trong một dấu nhắc lệnh loại cửa sổ:

start iexplore http://stackoverflow.com/users/flair/{your UID here}.html 
+0

Ngoại trừ iexplore không nằm trong đường dẫn theo mặc định. – grawity

+1

Đó là trên mỗi hộp cửa sổ tôi có quyền truy cập. XP, Vista, 2003, 7 – Hardwareguy

+3

Nếu iexplore bị bỏ đi thì nó sẽ mở trong trình duyệt mặc định, ví dụ: Opera hoặc Firefox. –

0

Có dữ liệu phức tạp hơn cho người sử dụng có sẵn thông qua (JSON):

http://stackoverflow.com/users/rep/50475/2009-01-01/2009-01-31 

Bạn có thể nhận được một số dữ liệu thú vị bằng cách phân tích chuỗi đó. Jon Skeet sử dụng nó cho rep tracker của mình.

Các vấn đề liên quan