Windows Batch File para mover o conteúdo com base no tipo de arquivo

0

Eu estava descobrindo uma maneira de gerenciar meus arquivos baixados do chrome.Eu quero que meu arquivo pdf deve salvar no diretório ABC, arquivo de áudio deve salvar no diretório XYZ etc.Eu pensei uma maneira de fazê-lo através de arquivo de lote.Meu arquivo de lote será executar silenciosamente em segundo plano e distribuirá automaticamente os arquivos baixados nas pastas necessárias de acordo com o tipo de arquivo.

Para o tipo de arquivo html, como salvar um diretório também, que contém um monte de coisas relacionadas a essa página html. Então eu tenho que mover o arquivo .html e o diretório associado também.

Eu escrevi um código para fazer isso, mas estou enfrentando um problema aqui.Ele move o arquivo .html, mas não movendo seu respectivo diretório.No prompt de comando, ele mostra 1 dir (s) movido, mas na verdade o diretório não está se movendo.

Aqui está o código:

    @echo off

    setlocal EnableDelayedExpansion

    for %%i in (*.html) do (
    move "%%~i" HTML
    set dirName=%%i
    set dirNameWithoutExtension=!dirName:~0,-5!
    move %dirNameWithoutExtension% HTML

    )

Por favor, sugira se existe alguma maneira simples de servir o propósito de distribuir arquivos baixados de acordo com o tipo de arquivo.

user3189612
fonte
Esses set's não são necessários, veja %% ~ ni vai te dar o nome do arquivo sem extensão que, coincidentemente, também é o nome do diretório emparelhado. Essas referências podem ser encontradas em /? Além disso, é uma boa prática colocar uma barra invertida após o nome do diretório, já que algum comando confunde HTML com um arquivo quando eles esperam HTML \ para o diretório. Além disso, ao usar esse tipo de método de cópia, convém pensar sobre bloqueios de arquivos e / ou pastas. E se o navegador bloquear um deles? Você não pode movê-los. Sugestão: use utilitários pré-fabricados.
JasonXA

Respostas:

0
@echo off
setlocal EnableDelayedExpansion
if not exist HTML md HTML
for %%i in (*.html) do (
    move "%%~i" HTML
    set dirName=%%i
    set dirNameWithoutExtension=!dirName:~0,-5!
    move "!dirNameWithoutExtension!" HTML
)

Você pode criar um arquivo de lote genérico para lidar com extensões diferentes ou apenas usar um dos muitos utilitários criado apenas para este propósito.

Karan
fonte
0

Tente usar caminhos relativos, sem desembaraçar o seu For declaração, você pode tentar

%%~i\..\

e subseqüente

%%~i\..\..\..\ 

andando de volta até a raiz, se necessário?

Sam Punctual
fonte
Oi Sam, eu não preciso ir até a raiz porque eu estou executando o loop em um único diretório.Todos os arquivos necessários estão localizados neste diretório.
user3189612