Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   _Построчная дописывание (http://forum.oszone.net/showthread.php?t=250006)

lukas_endigo_91@vk 26-12-2012 13:05 2053748

_Построчная дописывание
 
Есть папки с именами пользователей, с помощью команды DIR я получаю этот в виде текстового документа. Вот мы имеем текстовый файл с именами, и вот теперь проблема...
содержание файла User.txt:

Basov_D
Kim_E
Stasova_L

как сделать так чтобы команда перебрал этот файл и изменила её на

mkdir c:\UserNew\Basov_D
mkdir c:\UserNew\Kim_E
mkdir c:\UserNew\Stasova_L

то есть дописал перед каждым именем слова "mkdir c:\UserNew\"

Решение
Код:

@echo off
Setlocal EnableDelayedExpansion

for /f "delims=" %%a in ('dir /b/a:d "*"') do (
        for /f "delims=" %%b in ('dir /b/a:d "%%a"') do (
                md "%%a\%%b\2013year" 2>nul
                for /f "delims=" %%c in ('dir /b/a:d "%%a\%%b\2012year" 2^>nul') do (
                        md "%%a\%%b\2013year\%%c" 2>nul
                        )
                )
        )
exit /b


sov44 26-12-2012 13:43 2053782

Для чего переписывать текстовый файл? Может сразу создавать нужный?
Код:

for /f "delims=" %%a in ('dir /b/ad "c:\Papka\*"') do echo mkdir c:\UserNew\%%~na >>new.txt

Iska 26-12-2012 14:09 2053802

Цитата:

Цитата sov44
Для чего переписывать текстовый файл? Может сразу создавать нужный? »

Может сразу создавать папки ;)?

lukas_endigo_91@vk 26-12-2012 15:01 2053832

О_о получилось спасибо sov44, не судите меня строго. просто для меня команда for очень далекая, возникли еще 2 вопроса
1. если я правильно понимаю все данные от команды dir он задает в ("%%a" или "%%~na") и затем по одной строке записывает в "new.txt" с добавление "mkdir c:\UserNew\"
2. правильная ли команда будет
Код:

for /f "delims=" %%a in ('dir /b/ad "c:\Papka\*"') do echo mkdir c:\UserNew\%%~na_NewFolder>>new.txt
? то есть в содержании файла new.txt:
mkdir c:\UserNew\Basov_D_NewFolder
mkdir c:\UserNew\Kim_E_NewFolder
mkdir c:\UserNew\Stasova_L_NewFolder
команда правильная?

sov44 26-12-2012 17:00 2053883

1. да.
2. да.
lukas_endigo_91@vk, что хочется получить в конечном результате? Новые папки с именами пользователей?

lukas_endigo_91@vk 26-12-2012 20:17 2054038

sov44 спасибо еще раз, получается следующее:
есть файловая хранилище со следующей директории \\s_storage\designers\2012year\ и там есть в соответствии с AD папки с именами пользователей. Количество пользователей около 70-80 у каждого из них имеется файлы которые они накопили за 2012 год, а папок как designers 14 каталогов. И что самое интересное надо в каждом каталоге создать (designers и.т.д.) папки с названием 2013year чтобы они уже новый файлы с 1 января закидывали на новый уже пустые папки. А затем файл new.txt переименовать в new.bat и запустить. Дело очень упрощается когда есть список Пользователей с 2012year в виде new.txt (new.bat) с именами и дописанной команды создание папки. Надеюсь я вам подробно объяснил суть проблемы.

sov44 26-12-2012 23:11 2054115

lukas_endigo_91@vk, насколько понял, нужно в каталоге designers и в каждом каталоге рядом создать папку 2013year рядом с папкой 2012year. Папки 2013year наполнить папками с именами пользователей, которые взять из папки 2012year ?
тогда примерно так:
Код:

@echo off
Setlocal EnableDelayedExpansion

for /f "delims=" %%a in ('dir /b/a:d "*"') do (
        for /f "delims=" %%b in ('dir /b/a:d "%%a"') do (
                md "%%a\%%b\2013year" 2>nul
                for /f "delims=" %%c in ('dir /b/a:d "%%a\%%b\2012year" 2^>nul') do (
                        md "%%a\%%b\2013year\%%c" 2>nul
                        )
                )
        )
exit /b

скрипт должен находиться рядом с s_storage

gora 26-12-2012 23:21 2054126

Цитата:

Цитата sov44
Код:

md "%%~na"\"%%~nb"\2013year\"%%c" 2>nul
»

А так не проще?
Код:

md "%%~na\%%~nb\2013year\%%~c" 2>nul

sov44 26-12-2012 23:33 2054131

gora, Вы правы, поправил пост 7


Время: 19:26.

Время: 19:26.
© OSzone.net 2001-