criar arquivos automaticamente no Windows?

criar arquivos automaticamente no Windows?

Acho que gostaria de regenerar um diretório de arquivos de texto/falsos em um pendrive com os nomes exatos dos arquivos que existem em um diretório mestre.

O diretório mestre está em uma unidade de terabyte e é grande demais para caber em qualquer pendrive. Mas, quando estou usando o pendrive, gostaria de colidir nomes de arquivos ao baixar uma duplicata de outros lugares. ou seja: tento baixar algo e aparece: "Você já tem um arquivo chamado..."

Não me importo de executar esse script (desde que seja relativamente rápido) manualmente, quando atualizo o diretório mestre com novos arquivos adicionais e movo manualmente a estrutura de arquivos resultante de arquivos falsos para o pendrive.

Tenho pelo menos 3 níveis de estrutura de diretórios. Eu montei uma estrutura de diretório de teste simples com arquivos txt, em vez da estrutura real (principalmente) do PDF. Quando eu produzo tree /a /f . > list.txt:

    Folder PATH listing for volume Windows
    Volume serial number is 00C7-D795
    C:\USERS\USER\DESKTOP\TEST
    |   list.txt
    |   script.bat
    |   script.txt
    |   
    \---Top_Lvl
        |   file-2nd-1.txt
        |   file-2nd-2.txt
        |   file-2nd-3.txt
        |   
        +---2nd_Level-1
        |       file-3rd-1.txt
        |       file-3rd-2.txt
        |       file-3rd-3.txt
        |       
        +---2nd_Level-2
        |   |   file-3rd-4.txt
        |   |   file-3rd-5.txt
        |   |   file-3rd-6.txt
        |   |   
        |   \---3rd_Level-1
        |           file-4th-1.txt
        |           file-4th-2.txt
        |           
        \---2nd_Level-3
                file-3rd-7.txt

Não sei como escrever um cabeçalho para que um leitor de PDF exiba um arquivo com extensão .pdf (mas na verdade é um arquivo de texto) - o que seria um bônus realmente incrível. E não consigo encontrar um comando (attrib não funciona, pelo que sei) que irá gerar o tamanho do arquivo na saída de texto. Pois seria legal ter o tamanho do arquivo real disponível clicando no arquivo falso, sem ter que procurar nada em outro lugar.

Possíveis soluções parciais?

Eu achei isto:

Windows / Crie arquivos txt de subpastas com nomes de arquivos

Mas parece fazer uma bagunça e só faz um nível de diretórios.

E quando eu reescrevi/modifiquei, funcionou uma vez e depois parou de funcionar:

    @echo off

    for /dd %%D in (*) do (
      cd %%~nxD
      tree /a /f > ..\%%~nxD.txt
      cd ..

      echo %%~nxD > dir_info.tmp
      for /f "skip=3 delims=*" %%a in (%%~nxD.txt) do (
        echo.%%a >> dir_info.tmp
      )
      copy /y dir_info.tmp %%~nxD.pdf
      del /f /q dir_info.tmp
    )

Ele despejaria os resultados no diretório em que é executado, em vez de soltá-los na área de trabalho (e não consigo descobrir como soltá-los em uma área de trabalho padrão - em vez de codificá-los, se eu usar mais de um computador/conta para acessar a unidade do diretório mestre). E não tenho certeza se você pode especificar o pendrive, pois isso provavelmente muda o tempo todo, dependendo do que mais estiver conectado.

Além disso, estou frequentemente em sistemas Windows antigos, e é por isso que estava pesquisando um arquivo em lote. Se houver um aplicativo que faça isso, eu definitivamente consideraria isso - em vez de recortar a roda.


@eris sugeriu Robocopy e há algo chamado RichCopy:

https://technet.microsoft.com/en-us/magazine/2009.04.utilityspotlight

Mas essas aplicações tornariamrealduplicatas do diretório mestre - e não tenho muito espaço de armazenamento livre, nem na unidade mestre (e, como afirmado anteriormente: no pendrive em funcionamento).

Parece que não fui suficientemente claro; Estou tentando criar um diretório shadow, que tenha todos os nomes de arquivos (e, de maneira ideal, informações sobre o arquivo real, como tamanho), incluindo extensões - mas em espaço mínimo; Suponho que será um megabyte ou 3 no consumo real de espaço (já que cada arquivo e diretório usa ~ bloco) versus centenas de shows (por exemplo: arquivo de 50 MB, arquivo de 1 MB, arquivo de 832k, arquivo de 10 MB, arquivo de 15 MB).


Parece que robocopy é o que eu quero, se conseguir fazer a linha de comando funcionar corretamente:

ROBOCOPY Top_Lvl Shadow /CREATE

Não cria subdiretórios.

Responder1

@eris teve a ideia certa.

Na linha de comando:

robocoy *Top_Lvl* *Shadow* /create /mir

Parece que ele cria uma estrutura de diretórios shadow com arquivos de comprimento zero que espelha o diretório mestre. Tudo o que resta é descobrir como fazer isso em uma unidade, o que deveria ser uma simples questão de descobrir caminhos para a origem e o destino. No entanto, ele precisa ser usado com cautela, pois não gera automaticamente um erro antes de sobrescrever arquivos e diretórios (abaixo do ideal, imho).

Ele não faz o trabalho adicional de criar arquivos que também fornecem informações (tamanho do arquivo original), mas é uma solução boa o suficiente por enquanto.

informação relacionada