Usando 'enviar para…' fazer upload do arquivo para FTP e copiá-lo para a área de transferência

0

Eu odeio aplicativos estranhos, quase inúteis no meu PC. Eu não quero que eles fiquem correndo e esperando por mim para usá-lo uma vez por semana. Então, pensei que o compartilhamento de arquivos instantâneo poderia ser feito usando quase todas as ferramentas do Windows.

Eu encontrei como enviar um arquivo para FTP usando a linha de comando, então o resto do truque deveria ser copiar um nome de arquivo e adicionar o URL do FTP antes dele. Soa como tarefa fácil, mas não consigo ver qualquer opção para copiar um nome de arquivo usando o arquivo de lote ou qualquer outra coisa

A maneira mais fácil e limpa de conseguir isso é criar um script AutoIT, compilá-lo para executar com opções de linha de comando send ftp. Eu acho que poderia google todo o código para fazer isso. Alguma sugestão?

ClockworkBastard
fonte
Agora (depois de responder) não tenho certeza se entendi sua pergunta. Você já tem o script de upload e você quer URL (para baixar o arquivo de volta, gostaria de enviá-lo via e-mail para alguém)? Ou você precisa do URL para fazer o upload do arquivo (porque uma ferramenta que você usa para upload usa um URL para especificar um destino de upload)?
Martin Prikryl

Respostas:

0

Crie um arquivo em lotes que seja executado ftp.exe e toma um caminho de arquivo como um argumento.

(Eu assumo isso ftp.exe é o que você usa para "enviar arquivo para FTP usando a linha de comando" .)

Exemplo:

@echo off
set FILE=%1
set SCRIPT=%TEMP%\ftp.txt

echo open example.com > %SCRIPT%
echo username>> %SCRIPT%
echo password>> %SCRIPT%
echo cd /path >> %SCRIPT%
echo put %FILE% >> %SCRIPT%
echo bye >> %SCRIPT%

ftp.exe -i -s:%SCRIPT%

Crie um atalho para o arquivo em lotes %APPDATA%\Microsoft\Windows\SendTo (isto é tipicamente em C:\Users\username\AppData\Roaming\Microsoft\Windows\SendTo ).

Agora o atalho aparecerá em Enviar para submenu no menu de contexto do arquivo do Windows Explorer. Se você clicar nele, o Windows Explorer executará o arquivo em lote, passando automaticamente o caminho para um arquivo selecionado para o script como um argumento de linha de comando.

Observe que o script como não funciona quando vários arquivos são selecionados. Mas não é difícil melhorá-lo para suportar vários arquivos.


Para inserir um URL do arquivo em uma área de transferência, use %~nx1 para extrair somente o nome do arquivo, use-o para montar o URL e passar o resultado para clip.exe:

echo ftp://localhost/%~nx1| clip

(basta colocar esta linha no final do arquivo de lote)

Martin Prikryl
fonte
Obrigado Martin. Sim ftp.exe eu vou cavar o conhecimento do arquivo de lote esta noite, como por agora eu não consegui a coisa variável. %ROTEIRO%
ClockworkBastard
o %SCRIPT% representa um caminho para um arquivo de script ftp (temporário) criado pelo echo linhas. É só para que o caminho não seja repetido em todos os redirecionamentos como >> %TEMP%\ftp.txt
Martin Prikryl
Você me confundiu com% SCRIPT% em cada linha. Eu não estou realmente no código bach, mas eu vi o comportamento recursivo de um arquivo ler o arquivo que ele cria, de novo e de novo. Então parece que pela primeira vez ftp.txt deve ser criado manualmente com nome de usuário e senha.
ClockworkBastard
Depois de um pouco de teste e compreensão eu fiz isso !! Eu precisava de uma explicação coxa ontem como yourUsernameHere sua senha , sem espaço depois. E eu descobri que você perdeu um parâmetro necessário, é tão estúpido que devemos nos lembrar dele no ano de 2015 - digite binário .Sim, a segunda parte que preciso é copiar a URL resultante de um novo arquivo compartilhado para a área de transferência. Desculpe, eu removi a aceitação, mas se você precisar, eu recebo de volta, porque você ajudou muito.
ClockworkBastard
Tudo certo! Eu tenho uma última peça para adicionar para lidar com a tarefa inteira via arquivo em lotes. Eu preciso pegar o exato filename.ext do% 1, no oposto de caminho completo . Então o truque é quase utilizável, tudo o que você precisa é cortar o caminho do arquivo. para obtê-lo - 'eco yourFTPURLasText /% 1 | grampo'
ClockworkBastard
0

Então aqui está a resposta. Eu usei caracteres cirílicos «Ъ» para apontar as coisas “exatas” que devem ser alteradas com suas informações de FTP, sem espaços após nome de usuário ou senha

@echo off
set FILE=%1
set SCRIPT=%TEMP%\ftp.txt
echo ЪYourFTPserverHEREwithShareFolderЪ~nx1| clip
echo open ЪYourFTPserverHEREЪ > %SCRIPT%
echo ЪYourUsernameHereЪ>> %SCRIPT%
echo ЪYourPasswordHereЪ>> %SCRIPT%
echo cd ЪYourShareFolderHereЪ >> %SCRIPT%
echo type binary >> %SCRIPT%
echo put %FILE% >> %SCRIPT%
echo bye >> %SCRIPT%
echo ЪYourFTPserverHEREwithShareFolderForAsakeOfBigFilesЪ~nx1| clip
ftp.exe -i -s:%SCRIPT%

Crie um atalho para o arquivo em lotes ou o exato .BAT em% APPDATA% \ Microsoft \ Windows \ SendTo (ou seja, normalmente em C: \ Usuários \ nome do usuário \ AppData \ Roaming \ Microsoft \ Windows \ SendTo).

Esse lote diz adeus a toneladas de sites de compartilhamento de anúncios, basta procurar servidor ftp gratuito e você pode compartilhar em um piscar de olhos

ClockworkBastard
fonte