AHK-比较不同目录中的文件名(减去扩展名),如果名称相同,则复制/移动

时间:2019-02-28 21:10:56

标签: autohotkey

我想比较两个目录之间的文件名(减去扩展名),如果匹配,请将文件从两个目录之一复制(或移动[tbd])到第三个目录。即

Dir_A具有a.jpg,b.jpg,c.jpg,d.jpg,e.jpg,f.jpg

Dir_B具有a.pdf,c.pdf,d.pdf,f.pdf

结果将是

Dir_C获取a.jpg,c.jpg,d.jpg,f.jpg

我已经可以使用批处理文件来完成此操作,但是想学习如何通过AHK。基本上,只是因为我可以。 :)

批处理文件为:

def letstry(n):
    df[str(n-5)+ '-' +str(n)] = df[n] - df[n-5]
    growth = df[str(n-5)+ '-' +str(n)].sum()
    df[str(n-5)+ '-' +str(n)+ 'ratio']  = df[str(n-5)+ '-' +str(n)]/growth
    realg = df2.at['real increase', n]
    df['New' + str(n)] = df[n-5] + realg*df[str(n-5)+ '-' +str(n)+ 'ratio']
    return df

for i in range(2010, 2050, 50):
    letstry(i)

经过大量查找,找到了相似帖子并尝试进行插值后,我认为我已经接近了,但显然缺少一些东西。我希望有人能为我阐明这一点。

@Echo Off & SetLocal EnableExtensions
pushd D:\temp
For /F "tokens=*" %%I IN ('dir /a-d /b *.jpg') DO (
    IF EXIST "D:\temp\comp\%%~nI.pdf" move "%%~I" "D:\temp\new\" 
)

在尝试工作时,注释和转义序列是我自己的福祉,请学习并弄清楚。 :)非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用SplitPath将jpg文件名(不含路径,点和扩展名)存储在变量(name_no_ext)中,并使用{{在其他目录中检查是否存在同名pdf文件3}}:

SFolder:="D:\temp\"         ;Source folder
CFolder:="D:\temp\comp"     ;Compare folder
DestDir:="D:\temp\new"      ;where to move files

Loop Files, %SFolder%*.jpg        ;look for all jpg files
{
    SplitPath, A_LoopFileName,,,, name_no_ext
    If FileExist(CFolder . "\" . name_no_ext . .pdf)
        FileMove, %A_LoopFileFullPath%, %DestDir%  ;move the file.jpg to the "new" directory
}