我正在尝试运行一个脚本,该脚本部分设置了一个名为“name”的变量,使其仅是地址字段中的文件名称。永远只有一个文件,并且它始终位于同一位置,但文件的名称会发生变化。我尝试了以下操作:
for /f "delims=" %%G in ('dir /b \\sshserver\SFTP\incoming\Trade Capture Data\Import\Auction Volumes\Auction Volumes*.csv') do @set name=%%G
echo %name%
和
for /r %%f in (\\sshserver\SFTP\incoming\Trade Capture Data\Import\Auction Volumes\Auction Volumes*.csv) do @set name=%%~nf
echo %name%
文件的位置始终为 \sshserver\SFTP\incoming\Trade Capture Data\Import\Auction Volumes\,文件名始终以“Auction Volumes”开头
我是 CMD 编程的新手,很难理解 FOR 命令。我浏览了大量帖子,但似乎还是无法找到最好的方法来实现这一点!
请帮忙!
谢谢
答案1
我会为此使用 forfiles,因为它可以满足您的所有要求。
请注意,forfiles 不支持 UNC 路径,因此您必须先映射网络驱动器。
该脚本看起来是这样的:
@echo off
:: -- Navigate to the UNC using spare driveletter
pushd "\\sshserver\SFTP\incoming\Trade Capture Data\Import\Auction Volumes\"
:: -- get filename and store in variable
forfiles /m "Auction Volumes*.csv" /C "cmd /k set name=@file"
:: -- Return to local path and remove temp driveletter
popd
:: -- show result
echo %name%