Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Командный язык Windows XP. Работа с файлами и папками. / 7 сообщений из 7, страница 1 из 1
26.03.2011, 06:13
    #37183453
Хуль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командный язык Windows XP. Работа с файлами и папками.
Здравствуйте, люди!

Направьте пожалуйста в нужном направлении.

Передо мной конкретная задача и я буду рад любому совету (в т.ч. пойти почитать чего-нибудь полезного, т.к. сам не нашёл).
Особо буду благодарен, если посоветуете на какие команды и ключи следует обратить внимание.

А задача такая:

Есть множество файлов в одной папке (от неск. дес-ков, до неск. сотен).
Все они, например — IMG*****.jpg (где ***** — переменная часть имени).

IMG_4323.jpg
IMG_4324.jpg
IMG_4325.jpg
IMG_4326.jpg


Переглядев их все, некоторым из них я добавляю к имени индекс "_0"
(Было: IMG_4323.jpg | Стало: IMG_4323_0.jpg ).

А к другим индекс "_art"
(Было: IMG_4325.jpg | Стало: IMG_4325_art.jpg ).

IMG_4323_0.jpg
IMG_4324.jpg
IMG_4325_art.jpg
IMG_4326_0.jpg


Программе нужно:

1. Встретив файл, в имени которого есть подстрока (индекс) "_0" (IMG_4323_0.jpg), создать папку с именем, которая является цифровой частью имени этого файла (без индекса "_0"), т.е. в нашем случае папка будет иметь имя "4323" .

2. Переместить этот файл в эту новую папку.

3. Переместить в эту же папку все последующие файлы (IMG_4324.jpg, IMG_4325_art.jpg), пока не встретится файл с индексом "_0" (IMG_4326_0.jpg).

4. В эту же папку скопировать из установленного места файл (work.smth) и дать ему имя первого файла, но без литерального суффикса (Будет: 4323_0.smth).

5. Если в папке среди файлов нет файла с индексом "_art" — скопировать в неё (или создать в ней) файл "WA_ART" (пустой файл без расширения).

Таким образом все файлы множества будут рассортированы по папкам.
После этого полученные таким образом папки нужно разложить по 10-ть штук в новые папки, именами которых является имя родительской папки с добавлением порядковых индексов римскими цифрами. (См. пример тут же).

В родительской папке с именем " THINGS_2011_01 " имеем наши папки:
[4323]
[4326]

[4341]
[4343] — всего 10-ть папок, помещаем в новую папку с именем " THINGS_2011_01_I "

Следующие 10-ть папок — в папку с именем " THINGS_2011_01_II "
И так до тех пор, пока не разложим все папки. В последней папке не обязательно должно быть 10-ть папок.

И в конце в каждой папке вида THINGS_2011_01_XX нужно создать текстовый файл report.txt с перечнем тех 10-ти папок, которые в ней есть:

[4323] -
[4326] -

[4341] -
[4343] - — то есть в столбик.

Вот, ребята.
Но я даже не знаю, где узнать, какой командой можно получить имя файла, чтобы отдать его IF'у. И как управляться с IF'ом я тоже не знаю )

Помогите, пожалуйста.
...
Рейтинг: 0 / 0
27.03.2011, 01:47
    #37184207
Mozok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командный язык Windows XP. Работа с файлами и папками.
ХульНо я даже не знаю, где узнать, какой командой можно получить имя файла, чтобы отдать его IF'у.
dir , for
Хуль И как управляться с IF'ом я тоже не знаю )

if
...
Рейтинг: 0 / 0
30.03.2011, 12:39
    #37189950
dpadabed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командный язык Windows XP. Работа с файлами и папками.
Здравствуйте.

Вы просили меня на Я.ру помочь. Но тут я не могу помочь.

Единственное что могу подсказать - как все файлы с приставками _0 и _art переместить в отдельные папки.
...
Рейтинг: 0 / 0
31.03.2011, 06:16
    #37191551
belugin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командный язык Windows XP. Работа с файлами и папками.
Хуль,

а не удобней ли будет написать на vbs, js или PowerShell? Если последний надо ставить ,то первые два уже есть.
...
Рейтинг: 0 / 0
02.04.2011, 13:02
    #37195629
Хуль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командный язык Windows XP. Работа с файлами и папками.
Спасибо всем за ответы и советы.

Пока остановился на VBS (так удобно: правишь в блокноте, а запускаешь дв.кликом =)

Но либо я не умею искать, либо в *нете и правда как-то с русскоязычной инфой скудно.
По своему уровню нашел для начала: VBScript - сервер сценариев Windows .

И теперь у меня вопрос:

Можно ли на VBS собрать какой-нибудь простенький просмотрщик изображений , одной из функций которого было бы переименовывание файлов при нажатии горячей клавиши в соответствии с определённым правилом?
Может для этого нужен уже не VBS ?
...
Рейтинг: 0 / 0
02.04.2011, 15:07
    #37195694
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командный язык Windows XP. Работа с файлами и папками.
Просмотровщик можно... но например использовать HTA в качестве контейнера для HTML формы. Написав скрипт который загрузит список файлов в ListBox и будет загружать в какой нибудь "DIV IMG" выбранную фотографию. А так, нативных дизайнеров для создания форм (Таких как у VB6, VBA) у VBScript - нету.
...
Рейтинг: 0 / 0
06.04.2011, 05:09
    #37201484
Хуль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Командный язык Windows XP. Работа с файлами и папками.
Сделал, однако =)

Единственная проблема, с которой я так и не понял, как быть, это запуск скрипта без копирования его в нужную папку.
Для того, чтобы скрипт не брал в обработку свой файл, пришлось сделать проверку =)

Вообще, я понимаю, что взглянул краем глаза на один из не самых мощных языков программирования, но и это впечатляет.
Думать не хочется, сколько бы времени и сил ушло на то, чтобы обработать 402 файла в 103 директориях.
Однозначно, лучше это время потратить на изучение программирования! =)

Отдельная благодарность за книгу А. С. Грошев . Программирование на VBS , а так же «Серjve форум» (сам бы ещё долго искал, почему «Запись за пределами области данных» или как оно там. хо-хо.)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
Sub Report_File (decafolder)
          Dim fold1
          Set f_txt = fso.CreateTextFile (decafolder & "\report.txt")
          f_txt.WriteLine ("summ = $00.0")
          f_txt.WriteLine ("allt - 0.00 h")
          f_txt.WriteLine ("regl - 00")
          f_txt.WriteBlankLines ( 1 )
          f_txt.WriteLine ("Name — Time (min)")
          Set w = fso.GetFolder (decafolder)
          Set fold_coll = w.SubFolders
          For Each fold1 in fold_coll
          str = fold1.Name & " — 00"
          Set f_txt = fso.OpenTextFile (decafolder & "\report.txt",  1 )
          f_txt.ReadAll
          'ns = f_txt.Line
          Set f_txt = fso.OpenTextFile (decafolder & "\report.txt",  8 )
          f_txt.WriteLine (str)
          f_txt.Close
          Next
End Sub

'number of characters wich must to remove from file name
noc = InputBox("Укажите, пожалуйста, кол-во символов (с начала строки), которые следует удалить из названия файла" & vbLF & vbLF & "например, если имя было: DSCN4567.jpg, и ввести «4», то станет — 4567.jpg", "Ввод данных для переименования файлов", "4")
Q = InputBox("Укажите, пожалуйста, кол-во экземпляров в партии:", "Ввод данных для группировки файлов", "10")
M = InputBox("Укажите, пожалуйста, порядковый номер начальной партии:" & vbLF & vbLF & "Актуально, если Вы уже работали с этой поставкой.", "Ввод данных для группировки файлов", "1")
Dim f1
Set FSO = CreateObject("Scripting.FileSystemObject")

'получаем файл текущего сценария:
Set script_file = FSO.GetFile(WScript.ScriptName)
PFolder = script_file.ParentFolder
' получаем родительскую папку:
Set f = fso.GetFolder(PFolder)
' получаем коллекцию её файлов:
Set fc = f.Files
' запускаем цикл группирования:
k =  1  : l =  1  : n = M
For Each f1 in fc
' проверяем, не является ли файл нашим скриптом:
If FSO.GetExtensionName(f1) <> "vbs" Then
' получаем базовое имя файла и суффикс:
file_basename = FSO.GetBaseName(f1)
suffix = Mid (file_basename,  9 )
' оставляем цифровую часть имени:
new_basename = Mid (file_basename, noc +  1 )
If l <>  1  Then
          If l = Q+ 1  Then
          Call Report_File (decafolder)
          n = n +  1 
          l =  1 
          End If
End If
If k =  1  Then
         If l =  1  Then
                  num_fold = Right ("00" & n,  2 )
                  decafolder = fso.CreateFolder(f.Name & "_" & num_fold)
         End If
new_group_folder = new_basename
a = FSO.CreateFolder (decafolder & "/" & new_group_folder)
FSO.CopyFile "D:\_ЧАСЫ_\_prepared_\__work_watch__.psd", decafolder & "/" & new_group_folder & "/" & new_basename & "_0.psd"
End If
FSO.MoveFile file_basename & ".jpg", decafolder & "/" & new_group_folder & "/" & file_basename & ".jpg"
k = k +  1 
If suffix = "_articul" or suffix = "_end" Then
                                          k =  1 
                                          l = l +  1 
                                          End If
If suffix = "_end" Then FSO.CopyFile "D:\_ЧАСЫ_\_prepared_\без артикула", decafolder & "/" & new_group_folder & "/без артикула"
End If
Next
Call Report_File (decafolder)


Всем — Спасибо!
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Командный язык Windows XP. Работа с файлами и папками. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]