有没有一种方法可以在同一批处理功能中捕获文件路径和名称?

时间:2019-06-19 16:54:23

标签: powershell batch-file

我正在创建一个批处理脚本来执行robocopy功能。当前,我必须调用两个不同的PowerShell选项,一个用于文件名,然后一个用于源文件夹,我可以结合使用吗?

使用下面的代码,我可以捕获文件名,但是可以使用一种方法捕获两者吗?

echo Select your file
set pwshcmd=powershell -NoProfile -Command "&{[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | Out-Null;$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog; $OpenFileDialog.ShowDialog()|Out-Null; $OpenFileDialog.SafeFileName}"

for /f "delims=" %%I in ('%pwshcmd%') do (
    set "FileName=%%I"
)

echo %FileName%

pause

我希望用户使用PowerShell进行选择,并设置两个变量%FileName%%FilePath%,因为它将在robocopy脚本中使用。

1 个答案:

答案 0 :(得分:0)

我感谢大家在这个问题上的投入。我在发布后不久就解决了它,但是我确实遇到了这样一个事实,即robocopy想要一个不带结尾“ \”的目录路径。收集两条路径的方法是:

for /f "delims=" %%I in ('%pwshcmd%') do (
set "r_copy_file_source_path=%%~dpI"
set "r_copy_file_source=%%~nxI"
)

这为我提供了两个必需的变量,然后用以下命令从路径中剪掉结尾的“ \”:

set r_copy_file_source_path=%r_copy_file_source_path:~0,-1%

再次,我感谢您的答复!谢谢!