Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 以未知文件名作为参数运行exe的批处理文件_Batch File - Fatal编程技术网

Batch file 以未知文件名作为参数运行exe的批处理文件

Batch file 以未知文件名作为参数运行exe的批处理文件,batch-file,Batch File,我有一个exe用于比较2.csv文件。当我打开cmd窗口,拖动exe,键入空格,拖动第一个csv文件,键入空格,然后拖动第二个文件时,它就会工作 现在我想让它自动化,问题是它永远不会在同一个地方,也不会使用相同的文件进行比较 到目前为止,我得到的是以下一批: %~dp0\Komparator.exe BC101.csv BC102.csv 暂停 这两个csv文件将在同一个文件夹中,紧挨着.exe和.bat文件。。。但“同一个文件夹”并不总是相同的,今天它是一个位置,另一天是另一个文件夹 但我不知

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

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

到目前为止,我得到的是以下一批:

%~dp0\Komparator.exe BC101.csv BC102.csv
暂停

这两个csv文件将在同一个文件夹中,紧挨着.exe和.bat文件。。。但“同一个文件夹”并不总是相同的,今天它是一个位置,另一天是另一个文件夹

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


提前谢谢

您可以使用
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%"

两个CSV文件是否在同一文件夹中?它们是否只在一个子文件夹中?基本上我想说的是,它们在目录结构中只会被找到一次。@Squashman是的,这两个csv文件将位于同一个文件夹中,在.exe和.bat文件旁边。。。但是“同一个文件夹”并不总是一样的,今天是一个位置,另一天是另一个文件夹。我不明白你的困境是什么。用鼠标选择两个CSV文件,并将它们拖放到批处理文件上。然后批处理文件代码变成:
%~dp0\Komparator.exe%1%2
只需将“%~dp0”放在它们前面即可。正在工作!感谢您帮助我,而不是批评我索要代码。我很乐意提供帮助。如果文件名上有一个简单的“%~dp0”前缀就足够了,这似乎很复杂。排序的目的是什么?@wolfrevokcats,我想让您用名为t0.csv到t11.csv的文件来测试这一理论。