根据文件扩展名动态地将文件分类到不同的文件夹中

根据文件扩展名动态地将文件分类到不同的文件夹中

我正在使用服装 CAD 系统 (Lectra Modaris),当我保存时,它会自动生成 3 个文件。 有一个 .MDL 文件、一个 .HTML 文件和一个 .XCH 文件。

我希望 HTML 文件自动保存在与 MDL 文件不同的文件夹中(我不关心 XCH 文件发生什么,因为我不使用它们)。

我已经与 CAD 系统供应商进行了交流,他们说他们无法解决这个问题,但我想知道我是否可以通过 Windows 采取任何措施来实现这一点。

谢谢你!

答案1

有很多不同的方法可以实现这一点。

您可以使用许多在 Windows 上本地运行的不同脚本语言。.bat Batch、.vbs Visual Basic、.ps1 PowerShell 和 .js JavaScript。

您的特定问题集的自动化方面也有不同的方法。

  1. 您可以编写脚本以便它等待来自您的应用程序的更改。
  2. 您可以安排脚本在 Windows 任务计划程序中每 15 分钟运行一次;或者按照您想要的任何间隔运行。

您可以使用的 Windows 代码非常简单,可移植到所有版本的 Windows PC 上,任何人都可以使用它。这就是我将在下面提供的内容;它将采用批处理 .bat 脚本语言。由于我不知道您的经验水平,我假设您从未使用过 .bat 脚本。

您需要了解的 2 个命令是 cd 和 copy.exe。所需的 Windows 脚本技能也很少。1. .bat 或 .cmd 文件是 Windows 批处理或命令脚本。- 当您创建 .bat 文件时,它是一组对计算机的指令。如果您在 .bat 文件中写入字符串“Hello World”,则不会发生任何事情,但是如果您输入 echo“Hello World”,则“程序”将显示字符串 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

上述脚本不会出错,因为它们中没有语法错误。是的,第三个脚本引入了第四个命令“IF”。最后一个脚本还有一些“新”命令。

所有这些都出现在最后的脚本中。

  1. 改进它的一种方法是文件名中不要有空格。

  2. 另一种方法是使用“C:\Users\Liz E\My Work Files*.html”而不是仅仅使用*.html,但两者都是正确的并且可以完美运行。

  3. 另一种方法是添加一些代码安全/代码检查,例如检查/验证当前目录,如果(由于某些几乎不可能的原因) cd 命令不起作用则返回/退出脚本。

脚本 3 中的这行代码。IF /I NOT "%CD%"=="C:\Users\Liz E\My Work Files" GOTO:EOF

  1. 使用内置批处理脚本变量 SystemDrive/UserProfile 等。

但是,在将其保存在网页上并且您将其复制/粘贴到记事本或您选择的文本编辑器中之间,不管您信不信,可能会出现问题。

由此产生的问题与我在上面第一个/大量注释的脚本中提供的示例相同。双引号语法错误会导致您的脚本不执行任何操作。谁知道在其他 Windows 版本上是否可以执行其他操作。

问题是复制的文本采用不同的编码,粘贴时也是该编码。编码导致 .bat 脚本无法识别字符。

因此,上述大部分未注释的代码将相同;大约 90%。不同的是双引号。它们将采用不同的编码。您可以选择引号字符,然后使用记事本中的“查找/替换”将看起来完美的双引号字符(尽管您会注意到它看起来像斜体字符)替换为您在记事本中的“替换为”对话框中手动输入的字符。

如果这听起来很难或者您想下载一些很酷的应用程序来解决这个编码问题,请参阅此帖子底部的链接文章。

复制/粘贴问题已解决 https://stackoverflow.com/questions/122404/how-to-copy-and-paste-code-without-rich-text-formatting

相关内容