Динамическая сортировка файлов в разные папки на основе расширения файла по мере их создания

591
Liz Evans

Я работаю с системой CAD для одежды (Lectra Modaris), которая автоматически создает 3 файла при сохранении. Существует файл .MDL, файл .HTML и файл .XCH.

Я хочу, чтобы файлы HTML автоматически сохранялись в папке, отличной от файлов MDL (мне все равно, что происходит с файлами XCH, потому что я их не использую).

Я говорил с поставщиком систем CAD, и они говорят, что они не могут помочь с этим, но мне интересно, могу ли я что-нибудь сделать из Windows, чтобы это произошло.

Спасибо!

0

1 ответ на вопрос

0
Noshad Chaudhry

Есть много разных способов сделать это.

Вы можете использовать множество различных языков сценариев, которые изначально работают в Windows. .bat Batch, .vbs Visual Basic, .ps1 PowerShell и .js JavaScript.

Аспект автоматизации вашего конкретного набора задач также имеет разные подходы.

  1. Вы можете написать скрипт так, чтобы он ждал изменений из вашего приложения.
  2. Вы можете запланировать запуск сценария в планировщике задач Windows каждые 15 минут; или любой другой интервал, который вы хотите.

Код Windows, который вы можете использовать, действительно прост, переносим для всех версий Windows для ПК, и любой может его использовать. Это то, что я приведу ниже; это будет на языке сценариев Batch .bat. Поскольку я не знаю ваш уровень опыта, я предполагаю, что вы никогда не работали со сценариями .bat.

Вам нужно знать две команды: cd и copy.exe. Требуемые навыки работы с Windows Scripting также невелики. 1. Файл .bat или .cmd представляет собой пакетный или командный сценарий Windows. - При создании файла .bat это набор инструкций для компьютера. Если вы напишите строку «Hello World» в файле .bat, ничего не произойдет, но если вы добавите echo «Hello World», «program» отобразит строку hello world. 2. Так много может пойти не так. - Несмотря на то, что все это (сценарий «Программирование») звучит просто, существует множество способов, как что-то пойдет не так и вызовет реальные проблемы, в вашем случае, возможно, удаление файлов ваших работодателей. Ниже я приведу несколько комментариев в сценарии, в которых будет описан только 1 пример того, как что-то может пойти не так.

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. 

Ниже приведена версия скрипта без комментариев.

@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 

Улучшенная версия. Заявление 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" 

Улучшенная версия с автоматизацией.

@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 

Вышеприведенный скрипт [s] не может ошибаться, поскольку в em нет синтаксических ошибок / ошибок. Да, третий ввел четвертую команду в «ЕСЛИ». Последний скрипт имеет еще несколько «новых» команд.

Все они присутствуют в последнем сценарии.

  1. Одним из способов улучшить это было бы отсутствие пробелов в именах файлов.

  2. Другой способ - использовать «C: \ Users \ Liz E \ My Work Files * .html» вместо просто * .html, но оба они верны и будут работать отлично.

  3. Другой способ - добавить некоторые проверки безопасности кода / кода, такие как проверка, чтобы увидеть / проверить текущий каталог и возврат / выход из сценария, если (по некоторым почти невозможным причинам) команда cd не сработала.

Эта строка кода в сценарии 3. ЕСЛИ / Я НЕ "% CD%" == "C: \ Users \ Liz E \ Мои рабочие файлы" GOTO: EOF

  1. Использование встроенных скриптов пакетных переменных SystemDrive / UserProfile, другие.

Однако между тем, что он находится на веб-странице, и тем, что вы копируете / вставляете его в Блокнот или текстовый редактор по вашему выбору, поверите или нет, что-то может пойти не так.

Результирующая проблема будет такой же, как в примере, который я представил в 1-м / сильно комментированном скрипте выше. Синтаксическая ошибка в двойных кавычках, из-за которой ваш скрипт ничего не делает. Кто знает, что можно сделать что-то еще в какой-то другой редакции Windows.

Проблема заключается в том, что копируемый текст находится в другой кодировке, и при вставке это кодировка. Кодировка приводит к символам, которые сценарии .bat не понимают.

Таким образом, большая часть приведенного выше некомментированного кода будет одинаковой; примерно 90%. Что будет отличаться, это двойные кавычки. Они будут в другой кодировке. Вы можете выбрать символ цитирования и использовать Find / Replace в NotePad, чтобы заменить то, что выглядит как очень хороший символ двойных кавычек (хотя вы можете заметить, что он выделен курсивом) на тот, который вы вручную вводите в диалог «Заменить» в NotePad. ,

См. Связанную статью в нижней части этого сообщения, если это звучит сложно или вы хотите загрузить несколько классных приложений для решения этой проблемы кодирования.

Копирование / вставка проблемы решена https://stackoverflow.com/questions/122404/how-to-copy-and-paste-code-without-rich-text-formatting

Похожие вопросы