2014-12-30 3 views
-1

Я получаю файлы с 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
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 
  • длина/endpos может быть опущен. Если этот параметр опущен, подстрока «со стартовой позиции до конца»
  • % может быть ! для delayedexpansion режима

Так - ваш код должен быть возвращен «name_file_», как filenameright (вы не сказать, что это)

?? Вы уверены, что closebye должен быть в пределах цикла? Я бы предложил, чтобы они были снаружи (до for), но я редко использую эти объекты.

Смежные вопросы