Classifique dinamicamente os arquivos em pastas diferentes com base na extensão do arquivo à medida que são criados

0

Estou trabalhando com um sistema CAD de vestuário (Lectra Modaris) que gera automaticamente três arquivos quando salvo. Existe um arquivo .MDL, um arquivo .HTML e um arquivo .XCH.

Eu quero que os arquivos HTML sejam salvos automaticamente em uma pasta diferente dos arquivos MDL (não me importa o que acontece com os arquivos XCH porque não os uso).

Falei com o fornecedor do sistema CAD e eles dizem que não podem ajudar com isso, mas estou querendo saber se há algo que eu possa fazer no Windows para que isso aconteça.

Obrigado!

    
por Liz Evans 07.12.2017 / 15:39

1 resposta

0

Existem várias maneiras diferentes de fazer isso.

Você pode usar muitas linguagens de script diferentes que são executadas nativamente no Windows. .bat Batch, .vbs Visual Basic, .ps1 PowerShell e .js JavaScript.

O aspecto de automação do seu conjunto de problemas específico também tem abordagens diferentes.

  1. Você pode escrever o script para que ele aguarde as alterações do seu aplicativo.
  2. Você pode agendar o script para ser executado no Agendador de Tarefas do Windows a cada 15 minutos; ou qualquer intervalo que você quiser.

O código do Windows que você pode usar é realmente simples, portátil para todas as versões do Windows para PCs, e qualquer um poderia usá-lo. Isto é o que vou fornecer abaixo; ele estará na linguagem de script Batch .bat. Como não conheço seu nível de experiência, presumo que você nunca tenha trabalhado com scripts .bat.

Os dois comandos que você precisa saber são cd e copy.exe. As habilidades necessárias do Windows Scripting são poucas em número também. 1. Um arquivo .bat ou .cmd é um script de lote ou de comando do Windows.     - Quando você cria um arquivo .bat, é um conjunto de instruções para o computador. E se       você escreve a string "Hello World" em um arquivo .bat nada iria acontecer, mas       se você colocar echo "Hello World" o "programa" exibiria a string olá       mundo. 2. Tanto pode dar errado.     - Mesmo que isso (Scripting "Programming") pareça simples, existem       muitas maneiras de as coisas darem errado e causarem problemas do mundo real, na sua      caso talvez excluindo arquivos de seus empregadores. Vou colocar alguns comentários no      Um script abaixo descreve apenas um exemplo de como as coisas podem dar errado.

REM 2.1 Lines of text where beginning of the line has the word REM are 
    ways to put comments in a script. The echo command is the 3rd command 
    but isnt necessary.

REM This next line of code is required for decent display.
@Echo Off

REM 1. Syntax for the cd (Acronym for Change Directory) command is:
REM    CD "SomeFolders full directory path"
REM                  OR
REM    CD "SomeFolder inside the current folders path"
REM                  OR
REM    CD
REM    Using the command cd without anything after it will show your 
       current directory (Your current location)

REM 2. Syntax for the copy command is:
REM    Copy SourceFolder DestinationFolder
REM                  Or
REM    Copy SourceFoldersWildCards DestinationFolder

REM 1.  Change directory to where your files are.
REM You will have to change "C:\Users\Liz E\My Work Files" to the location 
    of your files. I just used this as an example.

REM 2.2 DoubleQuotes are excellent practice b/c all commands don't know how to deal with it when they are not present.
CD "C:\Users\Liz E\My Work Files"

REM Now that you are in another folder you can use relative references.
REM 2. Do some file copying.
REM This is a purposefully incorrect line of code to show what can go wrong.
Copy *.MDL C:\Users\Liz E\My Work Files\The MDL Files
REM Copy doesnt know what to do because there are no DoubleQuotes. 
Thankfully it doesnt do any copying and instead gives you an error message.

Copy *.MDL "C:\Users\Liz E\My Work Files\The MDL Files"
Copy *.HTML "My Work Files\The HTML Files"
Del *.XCH
REM Copied any file with the .MDL file extension
REM - into a folder named "The MDL Files"
REM - using absolute references.
REM Copied *.HTML files to a folder named "The HTML Files"
REM - using relative references.
REM Deleted .xch files using relative references.
REM 3.0 Del was undiscussed and makes 4 commands, 3 of which are necessary.

Abaixo está uma versão do script sem comentários.

@Echo Off
CD "C:\Users\Liz E\My Work Files"
Copy *.MDL  "C:\Users\Liz E\My Work Files\The MDL Files"
Copy *.HTML "My Work Files\The HTML Files"
Del  *.XCH

Versão melhorada. A declaração IF.

@Echo Off
CD "C:\Users\Liz E\My Work Files"
IF /I NOT "%CD%"=="C:\Users\Liz E\My-Work-Files" GOTO :EOF
Copy *.MDL  "C:\Users\Liz E\My-Work-Files\The-MDL-Files"
Copy *.HTML "C:\Users\Liz E\My-Work-Files\The-HTML-Files"
Del  C:\Users\Liz E\My-Work-Files\*.XCH"

Versão melhorada com automação.

@Echo Off
REM Set/configure the work folder in C:\My-Work-Files
REM Helps if ur work files are approaching length limit for windows files.
REM Note though you may have to deal with the folders permissions if you
REM put it outside your userprofile. This applies if your concerned about
REM someone else deleting your files or something.
REM Set/configure the work folder in C:\Users\Liz E\My-Work-Files
REM The 2nd line of code "overwrites/takes precedence" over the first one.
Set "MyWorkFiles="%SystemDrive%\My-Work-Files"
Set "MyWorkFiles="%UserProfile%\My-Work-Files"
Set "MDLFilesDest=UserProfile%\My-Work-Files\The-MDL-Files"
REM Set "HTMLFilesDest=UserProfile%\My-Work-Files\The-HTML-Files"

CD "%MyWorkFiles%"
REM If CurrentDirectory isnt right return/dont do anymore of the script.
IF /I NOT "%CD%"=="%MyWorkFiles%" (
    Echo Oops. I must have moved, renamed, or deleted the folder.
    Echo Returning from the script.
    Pause
    GOTO :EOF
)

:Begin
Copy "%MyWorkFiles%\*.MDL"  "%MDLFilesDest%"                             2>Nul
Copy "%MyWorkFiles%\*.HTML" "%UserProfile%\My Work Files\The-HTML-Files" 2>Nul
Del  "%UserProfile%\My Work Files\*.XCH"                                 2>Nul

REM TheAutomationLine. Wait/"pause" for 60 seconds.
Ping 127.0.0.1 -n 60 >Nul

REM Go the the label/section of the script marked as :Begin
REM Effectively this script will run forever; until you close it.
REM You can minimize it and it will work in the "background"
GOTO :Begin

O script acima não pode ser errado, pois não há bugs / erros de sintaxe em. Sim, o terceiro introduziu o quarto comando em "IF". O último script ainda tem alguns comandos "novos".

Todos estão presentes no último script.

  1. Uma maneira de melhorar seria não ter espaços nos nomes de arquivos.

  2. Outra maneira é usar "C: \ Usuários \ Liz E \ Meus Arquivos de Trabalho * .html" em vez de apenas * .html, mas ambos estão corretos e funcionarão perfeitamente.

  3. Outra maneira é adicionar algumas verificações de código / segurança, como verificar / verificar o diretório atual e retornar / sair do script se (por algum motivo quase impossível) o comando cd não funcionar.

Esta linha de código no script 3. SE / NÃO "% CD%" == "C: \ Usuários \ Liz E \ Meus Arquivos de Trabalho" GOTO: EOF

  1. Usando as variáveis de script integradas do Batch SystemDrive / UserProfile, outras.

No entanto, entre uma página da web e você copia / cola no NotePad ou o editor de texto de sua escolha, acredite ou não, algo pode dar errado.

O problema resultante seria o mesmo que no exemplo fornecido no primeiro script / altamente comentado acima. O erro de sintaxe de aspas duplas que resultaria em seu script não fazendo nada. Quem sabe o tho poderia fazer outra coisa em alguma outra edição do Windows.

O problema é que o texto que está sendo copiado está em uma codificação diferente e quando colado é essa codificação. A codificação resulta em caracteres que os scripts .bat não entendem.

Assim, a maior parte do código não comentado acima será o mesmo; aproximadamente 90%. O que será diferente é as aspas duplas. Eles estarão nessa codificação diferente. Você pode selecionar o caractere de aspas e usar Localizar / substituir no bloco de notas para substituir o que parece ser um caractere de aspas duplas perfeitamente bom (embora você possa notar que está em itálico) com um que você digita manualmente na caixa de diálogo Substituir por .

Veja o artigo vinculado na parte inferior desta postagem se isso parecer difícil ou se você quiser fazer o download de alguns aplicativos interessantes para lidar com esse problema de codificação.

Copiar / colar o problema resolvido link

    
por 10.12.2017 / 08:45