2015-05-12 77 views
0

(顯然需要幫助)。需要第二行輸出wmic得到最後修改命令輸入變量而不寫入文件

我有這樣的工作:

wmic datafile where name="%sourcepathdoubleslashnoquotes%%FileName%" get lastmodified > tmpFile.txt 
set /p myvar-a= < tmpFile.txt 
type tmpFile.txt | findstr /v LastModified > tmpFile2.txt 
set /p myvar-b= < tmpFile2.txt 
del tmpFile.txt 
del tmpFile2.txt 

tmpFile.txt有這樣的:

LastModified    
20150429124836.260625-240 

tmpFile2.txt有這樣的:

20150429124836.260625-240 

echo %myvar%產生這樣的:20150429124836.260625-240

我怎樣才能讓wmic命令在沒有每次寫入文件的情況下得到「20150429124836.260625-240」? 不知何故使用「skip 1」?

(整個事情是在一個循環 - 很多不必要的文件寫入的)

在此先感謝

+0

你好這個工程: WMIC數據文件,其中name = 「%sourcepathdoubleslashnoquotes %%的FileName%」 獲得上次更改/格式:列表 – Iconoclast

+0

它會產生這樣的:這產生:上次更改時間= 20150429124836.260625-240 – Iconoclast

+0

然而,這種假設:%sourcepathdoubleslashnoquotes %% FileName%實際上回聲是這個D:\\ DEVEL \\ somefile.txt – Iconoclast

回答

0

這裏的工作代碼段(name變更爲恆定值,更好的可讀性,應與where "name='%sourcepathdoubleslashnoquotes%%FileName%'"工作條款)。

for /F "tokens=2 delims==" %%G in (
    'wmic datafile where "Name='d:\\temp\\virus.bat'" get LastModified/value' 
) do for /F "tokens=*" %%x in ("%%G") do set "myvar=%%x" 

for環路

  • %%G檢索LastModified值;
  • %%x以去除值結束回車返回(wmic行爲:每條輸出線與0x0D0D0A代替共同0x0D0A結束),見下面的例子。

(複製粘貼&從我的命令行窗口):

==>for /F "tokens=2 delims==" %G in ('wmic datafile where "Name='d:\\temp\\virus 
.bat'" get LastModified/value') do @echo "%G" 
"20150512194153.372487+120 

==>for /F "tokens=2 delims==" %G in ('wmic datafile where "Name='d:\\temp\\virus 
.bat'" get LastModified/value') do @for /F "tokens=*" %x in ("%G") do @echo "%x" 
"20150512194153.372487+120" 

==> 
+0

謝謝你看這個! – Iconoclast

0

尤里卡!

這工作:

FOR/F 「跳過= 2個令牌= 2 delims =」 %%甲在( 'WMIC數據文件,其中「名=' d:\ DEVEL \ somefile。TXT '」獲得上次更改/格式:CSV')DO SET MYVAR = %%一個

也是這個工作(不需要跳躍=的路徑和名稱2)也取代變量:

爲/ f「tokens = 2 delims =,」%% A in('wmic datafile where「name ='%sourcepathdoubleslashnoquotes %% FileName%'」get lastmodified/format:csv')DO SET myvar = %% A

ECHO您的修改變量是在這裏:%myvar%

我的整個問題可能hav e只是引號 - 密切關注下面的單引號和雙引號 - 它的關鍵!此版本也用逗號分隔,但它也可以與「=」一起使用。

0

謝謝您的輸入JosefZ

我能得到這個工作:

FOR/F 「令牌= 2個delims ==」 %%的G('WMIC數據文件,其中「名稱= '%sourcepathdoubleslashnoquotes %% FILENAME%'」獲取的LastModified /值')做@echo %%ģ

輸出:20150512153513.391860-240

同樣在此:

(雖然我不知道如何它們中的任何的差異是導致)

爲/ F 「令牌= 2個delims ==」 %%的G( 'WMIC數據文件,其中「名稱=' % sourcepathdoubleslashnoquotes %% FILENAME% '」獲取的LastModified /值')做@for/F 「令牌= *」 %%中的x( 「%% G」)做@echo %% X

輸出:20150512153513.391860- 240

ECHO您的修改變量是在這裏:%myvar%

相關問題