如何使用批处理文件从路径和文件名返回文件的名称

如何使用批处理文件从路径和文件名返回文件的名称

我正在尝试运行一个脚本,该脚本部分设置了一个名为“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%

相关内容