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

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

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

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

Есть множество файлов в одной папке (от неск. дес-ков, до неск. сотен).
Все они, например — 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
Командный язык Windows XP. Работа с файлами и папками.
    #37184207
Mozok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХульНо я даже не знаю, где узнать, какой командой можно получить имя файла, чтобы отдать его IF'у.
dir , for
Хуль И как управляться с IF'ом я тоже не знаю )

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

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

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

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

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

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

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

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

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

Вообще, я понимаю, что взглянул краем глаза на один из не самых мощных языков программирования, но и это впечатляет.
Думать не хочется, сколько бы времени и сил ушло на то, чтобы обработать 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
7 сообщений из 7, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Командный язык Windows XP. Работа с файлами и папками.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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