Batch file 查找文件,然后将其名称用作变量命令提示符
如何查找文件并为变量指定文件名 例如: 假设我正在下面的位置查找文件。文件名不断变化,选择正确文件的唯一方法是在文件名字符串中查找今天的日期:Batch file 查找文件,然后将其名称用作变量命令提示符,batch-file,command-prompt,Batch File,Command Prompt,如何查找文件并为变量指定文件名 例如: 假设我正在下面的位置查找文件。文件名不断变化,选择正确文件的唯一方法是在文件名字符串中查找今天的日期: X:\VoyagerBackups\PickupLocation\tsiuiolou_live_Full_PCV048DB42_201812140000.Lts.bak 以下是我到目前为止在.bat文件中的内容。如果输入硬代码文件名,执行将按预期工作: echo on Rem Determine date Set mm1=%date:~4,2% Set
X:\VoyagerBackups\PickupLocation\tsiuiolou_live_Full_PCV048DB42_201812140000.Lts.bak
以下是我到目前为止在.bat文件中的内容。如果输入硬代码文件名,执行将按预期工作:
echo on
Rem Determine date
Set mm1=%date:~4,2%
Set dd1=%date:~7,2%
Set yyyy1=%date:~10,4%
Set rundate1=%yyyy1%%mm1%%dd1%
Set executefile1=tsiuiolou_live_Full_PCV048DB42_%rundate1%0000.Lts.bak
set downloadfile=tsiuiolou_live_Full_PCV048DB42_%rundate1%0000.bak
extractor64.exe -F %executefile1% -E %downloadfile%
move %executefile1% X:\VoyagerBackups\BackupFiles
不要使用依赖于%date%变量的区域设置/用户设置 改用
wmic
或PowerShell,它们都有更稳定的方法
:: Q:\Test\2018\12\14\SO_53787816.cmd
@Echo off
for /f "usebackq" %%A in (`
powershell -NoP -C "(Get-Date).ToString('yyyyMMdd')"
`) Do Set "Today1=%%A"
Echo PowerShell today:%Today1%
for /f "tokens=1-3 delims=.+-" %%A in (
'wmic os get LocalDateTime^|findstr ^^[0-9]'
) do Set "Today2=%%A"
Set "Today2=%Today2:~0,8%"
Echo wmic today:%Today2%
Set "Base=X:\VoyagerBackups\PickupLocation\"
PushD "%Base%" || (Echo can't find base:%Base%&Pause&Goto :Eof)
For /f "delims=" %%A in ('Dir /B "*%Today1%*" ') Do (
Echo found file:%%~fA
)
PopD
不要使用依赖于%date%变量的区域设置/用户设置 改用
wmic
或PowerShell,它们都有更稳定的方法
:: Q:\Test\2018\12\14\SO_53787816.cmd
@Echo off
for /f "usebackq" %%A in (`
powershell -NoP -C "(Get-Date).ToString('yyyyMMdd')"
`) Do Set "Today1=%%A"
Echo PowerShell today:%Today1%
for /f "tokens=1-3 delims=.+-" %%A in (
'wmic os get LocalDateTime^|findstr ^^[0-9]'
) do Set "Today2=%%A"
Set "Today2=%Today2:~0,8%"
Echo wmic today:%Today2%
Set "Base=X:\VoyagerBackups\PickupLocation\"
PushD "%Base%" || (Echo can't find base:%Base%&Pause&Goto :Eof)
For /f "delims=" %%A in ('Dir /B "*%Today1%*" ') Do (
Echo found file:%%~fA
)
PopD
你能解释一下wmic或PowerShell比CP/批处理文件更稳定是什么意思吗?我的回答中的前两个
for
命令演示了PowerShell和wmic如何以yyyyMMdd
格式=>%Today1%
,%Today2%
获取日期。最后一个for显示了如何获取名称中包含此日期的文件。您能解释一下wmic或PowerShell比CP/批处理文件更稳定是什么意思吗?我回答中的前两个for
命令演示了如何使用PowerShell和wmic以yyyyMMdd
格式=>%Today1%
,%today 2%
。最后一个for显示如何获取名称中包含此日期的文件。