我从ftp获取文件 我需要将每个文件复制到一个新文件夹,该文件夹将是文件名的右侧()9位置。
example filename: name_file_decw32014
required foldername: decw32014
当我运行它并将文件名放在变量中时,我看不到名称
@SETLOCAL ENABLEDELAYEDEXPANSION
open ftp.il.xxxx.com
oren
Dev123$
CD D:\oren\ftp
binary
prompt n
mget *.xxx
for /R D:\oren\ftp %%i IN (*.xxx*) DO (
set filename=%%~ni
set filenameRight=!filename:~0,-9!
PAUSE
if not exist "D:\oren\ftp\!filenameRight!" mkdir D:\oren\ftp\!filenameRight!
copy %%i D:\oren\ftp\!filenameRight!
pause
close
bye
)
在运行时,filenameRight不会更改为decw32014 !!!
答案 0 :(得分:0)
set filenameRight=!filename:~0,-9!
应该是
set filenameRight=!filename:~-9!
子串语法是
%var:~start,length% if start >=0 and length >0
%var:~start,endpos% if start >=0 and endpos <0
%var:~start,length% if start <0 and length >0
%var:~start,endpos% if start <0 and endpos <0
%
模式,!
可能为delayedexpansion
所以 - 您的代码应该返回&#34; name_file _&#34;作为filenameright
(你没有说它返回了什么)
??您确定close
bye
应该在循环中吗?我建议他们应该在外面(for
之前) - 但我很少使用这些设施。