0

我正在尝试创建一个批处理文件(通过 Windows XP Pro),该文件复制 2 个文件名长度不同的文件(.zpl)。ZPL 文件与标签打印机代码相关。文件名如下:

FillXferDataPBHAMFill###########.zpl
FillFormatsPBHAMFill###########.zpl

磅符号表示与要打印的特定标签/作业相关的数字。这些数字在每个作业中都是相同的。从一份工作到另一份工作,数字的长度各不相同,而且总是在变化。我试图从中提取这些文件的目录包含来自多个位置的 ZPL 文件,但是,我只想要 BHAM 文件。

批处理将从:\Server\C:\Directory1\Directory2\Directory3
复制到:\Server\Directory1\Directory2

不确定这是否会使事情进一步复杂化,但批处理文件将从第三台机器运行。此外,我不需要每次都复制每个文件。每当发送新的打印作业时,主管将运行批处理以在最后 X 时间内复制新的打印作业。X 是分钟。这是我到目前为止...

@echo off
SETLOCAL enableExtensions enableDelayedExpansion

SET sourceDir=Server\C:\Directory1\Directory2\Directory3
SET targetDir=Server\Directory1\Directory2

FOR %%a (FillFormatsPBHAM*.bat) DO (
SET "filename=%%a"
SET "folder=%targetDir%"
XCOPY "%%a" !folder!
)

FOR %%b (FillXferDataPBHAM*.bat) DO (
SET "filename=%%b"
SET "folder=%targetDir%"
XCOPY "%%b" !folder!
)

:END

我为一篇冗长的帖子道歉;只是想尽可能彻底。我在飞行中学习这一点,对我的无知如此赤裸裸。预先感谢您的任何帮助!!

审查的 StackOverFlow 材料:参考1 、参考2——过去一周我一直在到处寻找,这些是迄今为止最有帮助的 2 个。

4

1 回答 1

1

我看到了一些修复或改进 BAT 脚本的方法。

  1. FOR命令语法是FOR %%a IN (*.bat) DO (

  2. sourcedir 变量已设置Server\C:\Directory1\Directory2\Directory3,这不是 Windows 中的正确路径。

  3. 您在 FOR 循环和复制命令中都初始化但不使用 %sourcedir% variabe

    您应该使用命令更改当前驱动器和目录pushd %sourcedir%,或者在命令中指定它FOR

  4. 您的 FOR 循环分配了一个从未使用过的 %filename% 变量,您可以跳过此分配。

  5. 您的 FOR 循环分配了一个 %folder% 变量,该变量仅在复制命令中使用,您可以跳过此分配并简单地使用 %targetdir%

  6. 但是,只需将所有文件从一个文件夹复制到另一个文件夹,您不需要 FOR 来遍历所有文件,您可能只需正确复制它们即可。

所以,看看这个简单的脚本来帮助你开始吧..

SET sourceDir=\\servername\sharename\Directory1\Directory2\Directory3
SET targetDir=\\anotherserver\sharename\Directory1\Directory2
xcopy %sourceDir%\FillFormatsPBHAM*.bat %targetDir%
xcopy %sourceDir%\FillXferDataPBHAM*.bat  %targetDir%
于 2012-07-29T07:36:14.477 回答