加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 批处理文件中FOR / F和WMIC中何时以及要转义的内容

发布时间:2020-12-14 02:17:46 所属栏目:Windows 来源:网络整理
导读:我有以下代码,应该将文件的最后修改日期作为字符串返回: :getLastModifiedDate@echo onSETLOCAL enabledelayedexpansionset FILE=%~f1set FILE=!FILE:%NETWORK_DRIVE_SHARE_PATH%=%NETWORK_DRIVE_NAME%!set FILE=%FILE:=%set RETURN_VALUE="internal scr
我有以下代码,应该将文件的最后修改日期作为字符串返回:

:getLastModifiedDate
@echo on
SETLOCAL enabledelayedexpansion
set FILE=%~f1
set FILE=!FILE:%NETWORK_DRIVE_SHARE_PATH%=%NETWORK_DRIVE_NAME%!
set FILE=%FILE:=%
set RETURN_VALUE="internal script error"

for /f "tokens=* usebackq" %%d in (`wmic datafile where Name^="%FILE%" get lastmodified ^| findstr ^"[0-9]^"`) do ( set tmpd="%%d ddd"
    echo 222221 %tmpd%
    echo 222222 !tmpd!
    echo 333333 %%tmpd%%
    set RETURN_VALUE=%tmpd:~0,14%
)
(ENDLOCAL
    set getLastModifiedDateResult=%RETURN_VALUE%
)

exit
@echo off
goto :eof

我希望如此

set tmpd="%%d ddd"

至少将ddd设置为%tmpd%的值.

但是,在执行期间,没有做任何事情:

C:Windowssystem32>for /F "tokens=* usebackq" %d in (`wmic datafile where Name="S:ActuallyExisting File.csv" get lastmodified | findstr "[0-9]"`) do (
set tmpd="%d ddd"  
    echo 222221   
    echo 222222 !tmpd!  
    echo 333333 %tmpd%  
    set RETURN_VALUE=~0,14 
)

我希望我的for循环成为这个问题的原因.当我在cmd.exe中执行完全相同的字符串时,我得到一个结果:

C:Usersuuuu>for /f "tokens=* usebackq" %d in (`wmic datafile where Name^="S:ActuallyExisting File.csv" get lastmodified ^| findstr ^"[0-9]^"`) do ( set tmpd=%d )

[xxx@yyy auf zzzz]
  ) sersyc067xd>(set tmpd=20150413172700.000000+120

[yc067xd@R0199 auf FS00QHE0]
C:Usersuuuu>echo %tmpd%
20150413172700.000000+120

我哪里做错了什么?

解决方法

你必须使用wmic吗?
有一种更简单的方法可以返回上次修改日期:

FOR %%f IN ("%file%") DO SET lastmodified=%%~tf

所以你的脚本看起来像:

:getLastModifiedDate
  @echo on
  SETLOCAL enabledelayedexpansion
  set FILE=%~f1
  set FILE=!FILE:%NETWORK_DRIVE_SHARE_PATH%=%NETWORK_DRIVE_NAME%!
  set FILE=%FILE:=%
  set RETURN_VALUE="internal script error"

  FOR %%f IN ("%FILE%") DO SET getLastModifiedDateResult=%%~tf
  set getLastModifiedDateResult=%getLastModifiedDateResult:~0,10%
  @echo off
endlocal & goto :eof

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读