我正在尝试创建一个批处理文件(通过Windows XP专业版)来复制文件名长度不同的2个文件(.zpl)。 ZPL文件与标签打印机代码有关。文件名如下:
FillXferDataPBHAMFill ###########。ZPL
FillFormatsPBHAMFill ############。ZPL
井号表示与要打印的特定标签/作业相关联的数字。这些数字在每个工作中是相同的从一个工作到下一个工作,数字的长度各不相同,而且总是在变化。我试图从中提取这些目录包含来自多个位置的ZPL文件,但是,我只想要BHAM文件。
批次将从以下位置复制:\ Server \ C:\ Directory1 \ Directory2 \ Directory3
要复制到:\ Server \ Directory1 \ Directory2
不确定这是否会使事情进一步复杂化,但批处理文件将从第3台机器运行。此外,我不需要每次都复制每个文件。每当发送新的打印作业时,主管将运行批处理以在最后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材料已审核:Reference1,Reference2 - 过去一周我一直在寻找各地,这是迄今为止最有帮助的2个。
答案 0 :(得分:1)
我看到了一些修复或改进BAT脚本的方法。
FOR
命令语法为FOR %%a IN (*.bat) DO (
sourcedir变量设置为Server\C:\Directory1\Directory2\Directory3
,这在Windows中不是正确的路径。
您初始化但不要在FOR循环和副本commnand中使用%sourcedir%variabe
您应该使用pushd %sourcedir%
命令更改当前驱动器和目录,或者在FOR
命令中指定它。
您的FOR循环指定了一个永远不会使用的%filename%变量,您可以跳过此分配。
你FOR循环分配一个%文件夹%变量,该变量只在复制命令中使用,你可以跳过这个分配,只需使用%targetdir%
但是,要将所有文件从一个文件夹复制到另一个文件夹,您不需要FOR迭代所有文件,您可以直接复制它们。
所以,看看这个简单的脚本让你开始..
SET sourceDir=\\servername\sharename\Directory1\Directory2\Directory3
SET targetDir=\\anotherserver\sharename\Directory1\Directory2
xcopy %sourceDir%\FillFormatsPBHAM*.bat %targetDir%
xcopy %sourceDir%\FillXferDataPBHAM*.bat %targetDir%