Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Группировка файлов

Ответить
Настройки темы
CMD/BAT - Группировка файлов

Пользователь


Сообщения: 124
Благодарности: 5

Профиль | Отправить PM | Цитировать


Всем привет!

Есть структура папок:

archive
|
+2014-Apr-01
|
+2014-Apr-02
|
+2014-Apr-03


Нужно все файлы в папках переместить в каталог соответcтвующий формату 2014-Apr

Я написал скрипт:

Код: Выделить весь код
chcp 1251
setlocal enabledelayedexpansion
set input=d:\arch
set output=d:\test
set h="string"
mkdir %output%\2014
mkdir %output%\2014\2014-Jan
mkdir %output%\2014\2014-Feb
mkdir %output%\2014\2014-Mar
mkdir %output%\2014\2014-Apr
mkdir %output%\2014\2014-May
mkdir %output%\2014\2014-Jun
mkdir %output%\2014\2014-Jul
mkdir %output%\2014\2014-Aug
mkdir %output%\2014\2014-Sep
mkdir %output%\2014\2014-Oct
mkdir %output%\2014\2014-Nov
mkdir %output%\2014\2014-Dec
for /f %%i in ('dir /b %input%\') do (
for /f %%j in ('dir /b %input%\%%i\"#msgs"\') do (
ren %%j %%i_%%j
)
set h=%%i
move %input%\%%i\#msgs\* %output%\2014\%h:~0,8%\
)
проблема в том, что значение переменной h после set h=%%i все равно остается "string"

Подскажите пожалуйста с чем связана проблема?

Отправлено: 15:44, 09-02-2015

 

Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
move %input%\%%i\#msgs\* %output%\2014\!h:~0,8!\
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:59, 09-02-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 124
Благодарности: 5

Профиль | Отправить PM | Цитировать


спасибо заработало!!! блин а почему??? о_О

Отправлено: 16:50, 09-02-2015 | #3


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Цитата r1sh:
а почему??? »

Потому что переменные, задаваемые внутри цикла, должны расширяться не с помощью символов процента, а с помощью восклицательных знаков при обязательном включении отложенного расширения переменных ("setlocal enabledelayedexpansion"), что у Вас, кстати, в коде есть.

Отправлено: 17:01, 09-02-2015 | #4


Пользователь


Сообщения: 124
Благодарности: 5

Профиль | Отправить PM | Цитировать


Цитата Georgio:
Потому что переменные, задаваемые внутри цикла, должны расширяться не с помощью символов процента, а с помощью восклицательных знаков при обязательном включении отложенного расширения переменных ("setlocal enabledelayedexpansion"), что у Вас, кстати, в коде есть. »
а без "setlocal enabledelayedexpansion" они не будут вообще расширяться?

Отправлено: 17:33, 09-02-2015 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата r1sh:
а без "setlocal enabledelayedexpansion" они не будут вообще расширяться? »
Будут. Но только обычным образом — сразу, не «отложенно». Результат Вы видели в первом сообщении.

Иногда можно обойтись без отложенного расширения, используя технику опосредованного раскрытия переменных по «call»:
Код: Выделить весь код
@echo off
setlocal enableextensions disabledelayedexpansion

set sVar1=Some Value 1

(
	set sVar2=Some Value 2
	
	echo [%sVar1%]
	echo [%sVar2%]
	call echo [%%sVar2%%]
)

endlocal
exit /b 0

Отправлено: 17:58, 09-02-2015 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Группировка файлов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - Группировка окон grosmeba Microsoft Windows 7 2 23-06-2014 00:14
2010 - Группировка по выражению veter48 Microsoft Office (Word, Excel, Outlook и т.д.) 14 30-03-2012 15:58
Интерфейс - группировка файлов по имени в Windows 7 Ultimate sashauzer Microsoft Windows 7 1 03-03-2012 21:48
Разное - группировка окон fngidiotdonk Microsoft Windows 7 0 18-01-2011 22:25
Разное - Группировка строк в экселе pva Программирование и базы данных 6 16-04-2009 12:41




 
Переход