.bat define uma variável de acordo com os arquivos Multi draged e dropped

0

Como posso definir as variáveis no meu arquivo .bat de acordo com o arquivo eliminado?

Set file=C:\files\movie.mp4
Set folder=C:\files\

Eu quero mudar isso, por isso, quando eu arrastei e soltei um arquivo em .bat, a variável do arquivo foi alterada para ser arrastada, e a pasta foi alterada para o diretório pai do arquivo.

Isso é possível?

EDIT : O problema acima foi resolvido graças a Keltari & DavidPostill

Agora, estou enfrentando problemas quando descartei vários arquivos no .bat. Só executa o primeiro arquivo e não toca no resto. Embora funcione se eu derrubar arquivos um por um.

O que devo mudar para que funcione?

Meu código é

SET file=%~1
SET folder=%~dp1

ffmpeg -y -ss 120 -i "%file%" -an -c copy -bsf:v h264_mp4toannexb -f mpegts -t 00:00:010 "%folder%prev001.ts"
ffmpeg -y -ss 300 -i "%file%" -an -c copy -bsf:v h264_mp4toannexb -f mpegts -t 00:00:010 "%folder%prev002.ts"
ffmpeg -y -ss 600 -i "%file%" -an -c copy -bsf:v h264_mp4toannexb -f mpegts -t 00:00:010 "%folder%prev003.ts"
    
por user2132188 02.10.2016 / 17:44

1 resposta

1

Esta postagem do StackOverflow aborda como faça:

Arrastar & drop é mal implementado para arquivos em lote. Os nomes são citados, se houver espaço, mas não se um caractere especial for encontrado, como &,; ^

Para espaços apenas em seus nomes de arquivos, você precisa alterar seu código apenas um pouco.

@ECHO OFF
ECHO "%~1"
COPY "%~1" "%CD%\test\" /Y /S 
REN "%CD%\mob\*.png" "%CD%\test\test.png"
7za u -tzip "%appdata%\.virto\pack.zip" "test" -r

%~1 se expande sempre para uma versão sem aspas, por isso sempre pode citá-las de maneira segura.

"c:\Docs and sets" -> %~1 -> c:\Docs and sets -> "%~1" -> "c:\Docs and sets" c:\Programs -> %~1 -> c:\Programs -> "%~1" -> "c:\Programs"

    
por 02.10.2016 / 17:48