奇怪的问题 - 但它让我有点疯狂。我有一个目录,可以通过FTP转储多个文件,然后我需要一次处理它们。所以基本上在这个目录中我可以有1.txt,2.txt,3.txt等,然后我需要:
将文件复制到存档(如果存在复制到存档)
一次一个地将文件移动到一个特定的文件名 - data.txt< ---这就是让我感觉到的
使用特定文件名(data.txt)在旧版后端系统客户端上运行命令
使用data.txt
在旧版客户端上运行另一个命令删除data.txt
转到下一个文件并重复
到目前为止,我已经尝试了几种do循环方法而没有任何运气 - 他们都试图将多个文件重命名为一个文件,这只会让我失望。我很久以前就放弃了批处理文件,但令人讨厌的是,这个应用程序必须使用Windows,并启动Server 2003。
编辑:这是我尝试过的 -
这可以一次执行一个文件:
如果存在c:\ jail \ ftp * .txt copy c:\ jail \ ftp * .txt w:\ scans \ archive * .txt
如果存在c:\ jail \ ftp * .txt移动c:\ jail \ ftp * .txt w:\ data.txt
如果存在w:\ data.txt C:\ temp \ rmtcmdb.exe
如果存在w:\ data.txt del w:\ data.txt
我尝试了多个for循环但没有成功,这是最新的(注意 - 我只是试图通过这个移动阶段,一旦我完成了我将添加其余的):
setlocal ENABLEDELAYEDEXPANSION
FOR / f %% a IN(“c:\ jail \ ftp \”)DO(
CALL SET / A x =!x! +1
如果!x! == 1(
CALL复制%% a w:\ scans \ archive * .txt
CALL移动%% a w:\ data.txt
)
)
我也尝试了一些非常基本的for循环,并且再一次 - 没有任何东西超越移动阶段。
有什么建议吗?
答案 0 :(得分:0)
@echo off
setlocal enableextensions
for %%a in ("c:\jail\ftp*.txt") do (
set "fileName=%%~na"
setlocal enabledelayedexpansion
copy "%%~fa" "w:\scans\!fileName:*ftp=archive!%%~xa"
endlocal
move /y "%%~fa" "w:\data.txt"
start "" /wait "c:\temp\rmtcmdb.exe"
if exist "w:\data.txt" del /s "w:\data.txt" >nul 2>nul
)