2009-02-11 23 views
5

tôi muốn dịch một kịch bản sau đây từ vỏ Linux sang Windows XP baoASSIGN win XP commandline đầu ra để biến

GPSID=$(awk '/GPSID/ {print $3}' gora.RTK) 
awk -v variable=${GPSID} 'BEGIN {printf "Numer seryjny : " variable,$1}' >>out.txt 

Dòng thứ hai đã được dịch; vấn đề là với việc xác định một biến có chứa lượng vỏ trong cửa sổ :-(

+0

Vui lòng, gắn thẻ các yêu cầu của bạn một cách chính xác – PierreBdR

+0

Bạn có thực sự bị mắc kẹt với DOS (XP Shell) không? Nó bị giới hạn nghiêm trọng so với vỏ Linux. Nếu có thể, tôi khuyên bạn nên sử dụng một trong các ngôn ngữ kịch bản có sẵn trong XP (VBScript hoặc jscript) nếu có thể. Hoặc thậm chí tốt hơn nếu có thể cài đặt PowerShell. Bạn cũng có thể cài đặt Cygwin. – EBGreen

Trả lời

0

Làm thế nào về ...

for/f "tokens = *" %% một trong ('echo Hello World') làm thiết var = %% một

lƯU Ý:. sử dụng% một thay vì %% một khi cố gắng trên dòng lệnh khác giữ nó như một %% nếu sử dụng trong một tập tin batch

đâu 'echo Hello World' được lệnh mà đầu ra bạn muốn chụp và "var" là tên của biến nơi đầu ra sẽ được lưu trữ.

+0

Đó là gần như bạn sẽ có thể đến, nhưng OP nên lưu ý rằng các chuỗi đa luồng không thể được lưu trữ trong một var DOS. – EBGreen

1

Nếu bạn cần phải recurse thông qua đầu ra của lệnh, bạn có thể sử dụng for /f. Một cái gì đó như:

for /f "usebackq" %%L in (`awk '/GPSID/ {print $3}' gora.RTK`) do (
    awk 'BEGIN {printf "Numer seryjny : " %%L,$1}' >> out.txt 
) 
+0

Xin lỗi, tôi không thành thạo, nhưng hy vọng bạn sẽ có được ý tưởng. –

4

vấn đề ok cố định

for /f "tokens=*" %%a in ('awk "/GPSID/ {print $3}" gora.RTK ') do set var=%%a 
awk "BEGIN {printf \"GPSID : \" }" >out.txt 
echo %var% >>out.txt 

Mã này về cơ bản những gì tôi muốn làm.

Bạn đang rất cảm ơn !!!!!

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