在第一个查询结果上运行命令的批处理文件?

时间:2019-06-10 15:10:31

标签: windows batch-file cmd

我想编写一个批处理文件,该文件将通过特定查询调用命令。

所以我有

aaa-test-01.txt
b-test-a-02.txt
cc-test-03.txt //newset

查询:

dir *test*.txt /o-d 

(获取所有自定义文件,按日期顺序排列)

现在我想用记事本打开第一个结果。

问题

如何创建批处理文件,以便能够像这样运行它:

run.bat *test*.txt

批处理文件应具有以下内容:

notepad %the file%

基本上,我想用最新的文件打开记事本。

2 个答案:

答案 0 :(得分:2)

我建议您在npzfile = np.load(path+datasetNo+'\\temp.npz') arrs = npzfile.files oldPts = npzfile[arrs[0]] newPts = npzfile[arrs[1]] # remove all the negative values oldPts = oldPts[oldPts.min(axis=1)>=0,:] newPts = newPts[newPts.min(axis=1)>=0,:] # round to integers oldPts = np.around(oldPts).astype(int) newPts = newPts.astype(int) # put the oldPts into 2d array H, xedg,yedg= np.histogram2d(oldPts[:,0],oldPts[:,1], bins = [xMax,yMax], range = [[0, xMax], [0, yMax]]) finalNewList = [] N = 5 for pt in newPts: if not H[max(0,pt[0]-N):min(xMax,pt[0]+N), max(0,pt[1]- N):min(yMax,pt[1]+N)].any(): finalNewList.append(pt) finalNew = np.array(finalNewList) 循环中运行该命令,反转日期顺序,以便它在退出循环之前先返回并以最新的顺序执行,(这样可以防止下一个文件被执行上)

For /F

上面的示例使用最近的@For /F "Delims=" %%A In ('Dir /B /A:-D /O:-D /T:C "*-test-*.txt" 2^>Nul') Do @Start "" Notepad "%%A" & Exit /B 重做日期,而不是C强制或A书写的(默认),输入{{1 } {}处的{}},以查看W命令可用的用法信息。

答案 1 :(得分:1)

可以通过重定向文件中的输入来设置变量。

=== run.bat

@ECHO OFF
SET "TEMPFILE=%TEMP%\firstfile.tmp"
FOR /F "delims=" %%f IN ('DIR /B /A:-D /O:-D "%~1"') DO (ECHO>"%TEMPFILE%" %%~f")
SET /P "FIRSTFILE=" <"%TEMPFILE%"
notepad "%FIRSTFILE%"
IF EXIST "%TEMPFILE%" (DEL "%TEMPFILE%")

在命令提示符下,只需运行.bat文件脚本。

CALL run.bat *test*.txt

如果您想继续使用PowerShell并具有最新版本5或更高版本,可以使用它。

Get-ChildItem -File '*test*.txt' |
    Sort-Object -Property LastWriteTime |
    Select-Object -First 1 |
    ForEach-Object { & notepad $_.Name }