首页 > 解决方案 > 如果我有一个批处理文件使用下面的代码调用 txt 文件并且我的预期结果是 MyFile_20200804.zip,我在这里做错了什么

问题描述

echo off
Set Today=%Date:~8,2%%Date:~5,2%%Date:~2,2%

option batch abort
option confirm off

open sftp://Username:Password@HostName -hostkey="my host key"
get MyFile_%Today%.zip  "E:\MyFolder\" 

预期结果MyFile_20200804.zip

标签: batch-file

解决方案


我没有安装 WinScp,所以无法测试,但你需要创建一个答案文件,我们称之为它myfile.txt,但是你需要在文件中创建日期变量,所以我们可以让批处理文件创建文本文件你:

@echo off
for /f "tokens=2 delims=.=" %%i in ('wmic os get localdatetime /value') do set result=%%i
(
  echo option batch abort
  echo option confirm off
  echo open sftp://Username:Password@HostName -hostkey="my host key"
  echo get "MyFile_%result:~0,8%.zip"  "E:\MyFolder\" 
  echo exit
)>myfile.txt
winscp.com /ini=nul /script=myfile.txt

您会注意到我使用wmic os get localdatetime了特定于语言环境的%date%变量而不是。如果您有不同的区域设置,您的脚本将无法收集文件,%date%因为有各种可用的日期格式。


推荐阅读