使用未知文件名作为参数运行exe的批处理文件

时间:2018-03-02 19:45:59

标签: batch-file

我有一个用于比较2个.csv文件的exe。当我打开cmd窗口,拖动exe,键入空格,拖动第一个csv文件,键入空格,然后拖动第二个文件时,它就可以工作。

现在我想自动化它,问题是它永远不会在同一个地方,也不会使用相同的文件进行比较......

到目前为止我得到的是批量跟进:

%~dp0\Komparator.exe BC101.csv BC102.csv pause

这两个csv文件将位于同一个文件夹中,旁边是.exe和.bat文件...但是“相同文件夹”并不总是相同,今天它的一个位置,另一天是另一个文件夹

但我不知道如何为文件名自动化这两个参数,我只是想让它识别.exe和.bat附近的两个.csv文件

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可以使用for周期读取csv文件名并将其存储到批处理变量中。 这是一个示例,假设您的csv文件与批处理文件位于同一目录中。

<强> compare.cmd

@echo off
set FILE1=
set FILE2=
for /f "delims=" %%a in ('dir /b %~dp0*.csv 2^>nul ^| sort') do (
    if defined FILE1 set "FILE2=%%~a" & goto :exit_loop
    set "FILE1=%%~a"
) 
:exit_loop
if not defined FILE1 echo first csv file not found!& goto :eof
if not defined FILE2 echo second csv file not found!& goto :eof
%~dp0\Komparator.exe "%~dp0%FILE1%" "%~dp0%FILE2%"