web-dev-qa-db-ja.com

最終変更された文字列の一部を変数に取得するバッチファイル

WMIC path Win32_Directory WHERE name="W:\\foldername" get lastmodified

このようなものを返します

最終更新日
20140612 095434.758265-240

これをバッチファイルに入れて、その文字列の太字部分を変数に割り当て、後でバッチファイルで使用できるようにします。

どんな助けでも大歓迎です!

これは参考のためにこれまでの私のバッチファイルです

@echo off
@cls
Net Use W: \\file\home\ex-employees
cd W:
W:

REM Get user ID
set /p id="Enter ID of user to Archive: "

REM Get last modified code goes here assigned to "LM" variable
REM
REM WMIC path Win32_Directory WHERE name='W:\\rsink' get lastmodified

REM Join Variables
call set filename=%%%id%%LM%%%

call zipjs.bat zipItem -source %id% -destination .\%filename%.Zip -keep yes -force no

rmdir /S /Q %id%

Echo All Done!
@pause
3
LeperMessiah

これをバッチファイルに入れて、その文字列の太字部分を変数に割り当てたいと思います

WMIC path Win32_Directory WHERE name="W:\\foldername" get lastmodified

このようなものを返します

最終更新日

20140612095434.758265-240

これを行うには、for /fループを使用できます。これが小さな例です。

GetLastModifiedDate.cmd:

@echo off 
rem GetLastModifedDate.cmd
setlocal enabledelayedexpansion
rem skip header line
rem use findstr to remove blank lines
for /f "skip=1 tokens=*" %%d in ('WMIC path Win32_Directory WHERE name^="f:\\test" get lastmodified ^| findstr /r /v "^$"') do (
  set LM=%%d
  rem required part is alway 8 chars yyyymmdd so strip first 8 chars
  set LM=!LM:~0,8!
  )
echo %LM%
endlocal

必要な変更を加えたバッチファイル:

@echo off
@cls
setlocal enabledelayedexpansion 
Net Use W: \\file\home\ex-employees
cd W:
W:

REM Get user ID
set /p id="Enter ID of user to Archive: "

REM Get last modified code goes here assigned to "LM" variable
rem skip header line
rem use findstr to remive blank lines
for /f "skip=1 tokens=*" %%d in ('WMIC path Win32_Directory WHERE name^="W:\\rsink" get lastmodified ^| findstr /r /v "^$"') do (
  set LM=%%d
  rem required part is alway 8 chars yyyymmdd so strip first 8 chars
  set LM=!LM:~0,8!
  )

REM Join Variables
call set filename=%%%id%%LM%%%

call zipjs.bat zipItem -source %id% -destination .\%filename%.Zip -keep yes -force no

rmdir /S /Q %id%

Echo All Done!
@pause

参考文献

2
DavidPostill