pipe multiple files into a single batch file (using explorer highlight)

后端 未结 5 1453
后悔当初
后悔当初 2021-01-14 19:50

I can already get a batch file to run when a user right clicks on a file type. How can I make it so that only one instance runs per highlighted group and gets all the files

5条回答
  •  余生分开走
    2021-01-14 20:46

    Normally a file association multi-selection invocation will start several instances of a program and the program itself would have to deal with it on its own (Or with the help of DDE or IDropTarget)

    It is going to be very hard to implement this in a batch file, this example should get you started:

    @echo off
    setlocal ENABLEEXTENSIONS
    set guid=e786496d-1b2e-4a49-87b7-eb325c8cc64d
    set id=%RANDOM%
    FOR /F "tokens=1,2,3 delims=.,:/\ " %%A IN ("%TIME%") DO SET id=%id%%%A%%B%%C
    set sizeprev=0
    
    >>"%temp%\%guid%.lock" echo %id%
    >>"%temp%\%guid%.list" echo %~1
    
    :waitmore
    >nul ping -n 3 localhost
    FOR %%A IN (%temp%\%guid%.list) DO set sizenow=%%~zA
    if not "%sizeprev%"=="%sizenow%" (
        set sizeprev=%sizenow%
        goto waitmore
    )
    FOR /F %%A IN (%temp%\%guid%.lock) DO (
        if not "%%A"=="%id%" goto :EOF
        FOR /F "tokens=*" %%B IN (%temp%\%guid%.list) DO (
            echo.FILE=%%B
        )
        del "%temp%\%guid%.list"
        del "%temp%\%guid%.lock"
        pause
    )
    

    While this works, it is a horrible horrible hack and will fail badly if you don't wait for the first set of files to be parsed before starting a new operation on another set of files.

提交回复
热议问题