Sortieren Sie Dateien dynamisch in verschiedene Ordner basierend auf der Dateierweiterung, wenn Sie erstellt werden

761
Liz Evans

Ich arbeite mit einem Bekleidungs-CAD-System (Lectra Modaris), das beim Speichern automatisch 3 Dateien generiert. Es gibt eine .MDL-Datei, eine .HTML-Datei und eine .XCH-Datei.

Ich möchte, dass die HTML-Dateien automatisch in einem anderen Ordner als die MDL-Dateien gespeichert werden (es ist mir egal, was mit den XCH-Dateien geschieht, weil ich sie nicht verwende).

Ich habe mit dem Hersteller des CAD-Systems gesprochen und sie sagen, dass sie nicht helfen können, aber ich frage mich, ob ich irgendetwas von Windows aus tun kann, um dies zu ermöglichen.

Vielen Dank!

0

1 Antwort auf die Frage

0
Noshad Chaudhry

Es gibt viele verschiedene Möglichkeiten, dies zu tun.

Sie können viele verschiedene Skriptsprachen verwenden, die nativ unter Windows laufen. .bat Batch, .vbs Visual Basic, .ps1 PowerShell und .js JavaScript.

Der Automatisierungsaspekt Ihres speziellen Problemsatzes hat auch unterschiedliche Ansätze.

  1. Sie können das Skript so schreiben, dass es auf Änderungen in Ihrer App wartet.
  2. Sie können das Skript so planen, dass es alle 15 Minuten in Windows Task Scheduler ausgeführt wird. oder was auch immer du willst.

Der Windows-Code, den Sie verwenden können, ist sehr einfach und für alle Versionen von Windows für PCs portierbar, und jeder kann ihn verwenden. Dies werde ich weiter unten erläutern. es wird in der Batch-.bat-Skriptsprache sein. Da ich Ihre Erfahrung nicht kenne, gehe ich davon aus, dass Sie noch nie mit .bat-Skripts gearbeitet haben.

Die 2 Befehle, die Sie kennen sollten, sind cd und copy.exe. Die erforderlichen Windows-Scripting-Kenntnisse sind ebenfalls gering. 1. Eine .bat- oder .cmd-Datei ist ein Windows-Stapel- oder Befehlsskript. - Wenn Sie eine .bat-Datei erstellen, werden Anweisungen an den Computer gesendet. Wenn Sie den String "Hello World" in eine .bat-Datei schreiben, würde nichts passieren. Wenn Sie jedoch "Hello World" eingeben, zeigt das "Programm" den String "Hello World" an. 2. So viel kann schief gehen. - Obwohl dies (Scripting "Programming") einfach klingt, gibt es so viele Möglichkeiten, dass Dinge schief gehen und Probleme in der realen Welt verursachen. In Ihrem Fall können Sie die Dateien Ihres Arbeitgebers löschen. Ich werde unten im Skript einige Kommentare einfügen, die nur ein Beispiel beschreiben, wie etwas schief gehen könnte.

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. 

Nachfolgend finden Sie eine Version des Skripts ohne Kommentare.

@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 

Verbesserte Version. Die IF-Anweisung.

@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" 

Verbesserte Version mit Automatisierung.

@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 

Das obige Skript [s] kann nichts falsch machen, da es in em keine Syntaxfehler gibt. Ja, der Dritte führte den vierten Befehl in "IF" ein. Das letzte Skript hat noch einige "neue" Befehle.

All dies ist im letzten Skript vorhanden.

  1. Eine Möglichkeit, dies zu verbessern, wäre, keine Leerzeichen in den Dateinamen zu haben.

  2. Eine andere Möglichkeit ist die Verwendung von "C: \ Users \ Liz E \ My Work Files * .html" anstelle von * .html. Beide sind jedoch korrekt und funktionieren einwandfrei.

  3. Eine andere Möglichkeit besteht darin, einige Code-Sicherheits- / Codeüberprüfungen hinzuzufügen, z. B. das aktuelle Verzeichnis zu überprüfen / überprüfen und das Skript zurückzugeben / zu beenden, wenn der Befehl cd (aus einem fast unmöglichen Grund) nicht funktioniert hat.

Diese Codezeile in Skript 3. IF / I NOT "% CD%" == "C: \ Benutzer \ Liz E \ Meine Arbeitsdateien" GOTO: EOF

  1. Verwenden der integrierten Batch-Skriptvariablen SystemDrive / UserProfile und anderen.

Wenn Sie jedoch auf einer Webseite sitzen und diese in NotePad oder den Texteditor Ihrer Wahl kopieren / einfügen, glauben Sie, dass etwas schief läuft oder nicht.

Das resultierende Problem wäre dasselbe wie in dem Beispiel, das ich im 1. / stark kommentierten Skript oben gegeben habe. Der doppelte Anführungszeichen-Syntaxfehler führt dazu, dass Ihr Skript nichts unternimmt. Wer weiß, dass er bei einer anderen Windows-Edition noch etwas tun könnte.

Das Problem ist, dass der zu kopierende Text in einer anderen Kodierung vorliegt und beim Einfügen diese Kodierung ist. Die Kodierung führt zu Zeichen, die von .bat-Skripts nicht verstanden werden.

Die meisten der oben genannten nicht kommentierten Codes sind also identisch. ungefähr 90%. Was wird anders sein, sind die Anführungszeichen. Sie werden in dieser unterschiedlichen Kodierung sein. Sie können das Anführungszeichen auswählen und in NotePad Suchen / Ersetzen verwenden, um das, was wie ein perfektes Anführungszeichen aussieht (obwohl Sie feststellen können, dass es kursiv ist) durch ein Zeichen zu ersetzen, das Sie manuell in das Dialogfeld "Ersetzen durch" in NotePad eingeben .

Lesen Sie den verlinkten Artikel am Ende dieses Beitrags, wenn dies schwierig klingt oder Sie einige coole Anwendungen herunterladen möchten, um dieses Codierungsproblem zu lösen.

Problem beim Kopieren / Einfügen gelöst https://stackoverflow.com/questions/122404/how-to-copy-and-paste-code-without-rich-text-formatierung