Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Копирование с переименовыванием по счетчику
Goto page Previous  1, 2, 3, ... 11, 12, 13  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Mon May 02, 2011 18:17    Post subject: Reply with quote

Тупо
Code:

cmd=cmd /c title Копия... &for %u in (
param=%S) do (echo f|xcopy/y/c/h/r/k/z %%u "Копия %%~u"&echo f|xcopy/y/c/h/r/k/z %%u "Копия %%~nu (2)%%~xu"&echo f|xcopy/y/c/h/r/k/z %%u "Копия %%~nu (3)%%~xu"&echo f|xcopy/y/c/h/r/k/z %%u "Копия %%~nu (4)%%~xu"&echo f|xcopy/y/c/h/r/k/z %%u "Копия %%~nu (5)%%~xu")

Не знаю как в em_
но чтобы уместить 5 копий в кнопку, пришлось пожертвовать 1 ключём
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue May 03, 2011 02:09    Post subject: Reply with quote

Tol!k wrote:
Тупо
Универсализируем?

Для тех, кому необходимо часто создавать статическое число копий:
Code:
' Cоздать указанное число копий для каждого выделенного файла
' вида "<имя_файла> (x)" с приращением x+1 по счётчику"
' Параметры: %L "<путь назначения>\" "первая цифра счётчика" "число копий"
' Пример: %L "%P" 2 5
'=======================================================
With CreateObject("Scripting.FileSystemObject")
Set TempFile = .OpenTextFile(WScript.Arguments(0), 1)
Do While Not TempFile.AtEndOfStream
Set File = .GetFile(TempFile.ReadLine)
For i=WScript.Arguments(2) to Abs(WScript.Arguments(3))+Abs(WScript.Arguments(2))-1
File.Copy WScript.Arguments(1)&.GetBaseName(File)&" ("&i&")."&.GetExtensionName(File),False
next
Loop
End With

Для тех, кому требуется вводить разное число копий для разных ситуаций:
Code:
' Cоздать копии (с указанием их кол-ва) для каждого выделенного
' файла вида "<имя_файла> (x)" с приращением x+1 по счётчику"
' Параметры: %L "<путь назначения>\" "первая цифра счётчика"
' Пример: %L "%T" 1
'=======================================================
Count = InputBox("Введите число копий для каждого файла",_
"Копирование выделенных файлов по счётчику")
With CreateObject("Scripting.FileSystemObject")
Set TempFile = .OpenTextFile(WScript.Arguments(0), 1)
Do While Not TempFile.AtEndOfStream
Set File = .GetFile(TempFile.ReadLine)
For i=WScript.Arguments(2) to Abs(Count)+Abs(WScript.Arguments(2))-1
File.Copy WScript.Arguments(1)&.GetBaseName(File)&" ("&i&")."&.GetExtensionName(File),False
next
Loop
End With

Слегка поправил свой старый скрипт для схожей задачи. Решил обойтись без слова "Копия". Хотя это легко поправимо:
Quote:
File.Copy WScript.Arguments(1)&"Копия "&File.Name,False
For i=WScript.Arguments(2) to Abs(WScript.Arguments(3))+Abs(WScript.Arguments(2))-2
File.Copy WScript.Arguments(1)&"Копия "&.GetBaseName(File)&" ("&i&")."&.GetExtensionName(File),False
Back to top
View user's profile Send private message
ask-rus



Joined: 10 Nov 2009
Posts: 2076
Location: Russian Federation

Post (Separately) Posted: Tue May 03, 2011 09:00    Post subject: Reply with quote

Tol!k wrote:
но чтобы уместить 5 копий в кнопку, пришлось пожертвовать 1 ключём

Не критично? Чтобы идеально давай сократим до 3-х копий, у меня не выходит.

Добавлено спустя 13 минут 18 секунд:

Flasher wrote:
Хотя это легко поправимо

Аналогично, не смог поправить. Менял две строки скрипта на эти три - ошибки.
_________________
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Tue May 03, 2011 12:55    Post subject: Reply with quote

http://powerpro.wincmd.ru/Scripts/Duplicate.htm
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue May 03, 2011 14:06    Post subject: Reply with quote

ask-rus wrote:
Менял две строки скрипта на эти три - ошибки.
Значит учтено не всё: скрипт(1/2), параметры. Если второе, то и без замены ошибки будут.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Mon May 09, 2011 12:07    Post subject: Reply with quote

Предыстория. Если в имени есть & или ) и нет пробела, то
Code:
for %%U in (%S) do ...
работать не будет. Лучше так
Code:
[em_FileCopy]
button=%COMMANDER_PATH%\wcmicons.dll,3
cmd=%ComSpec% /c title Копия... &for /f "delims=" %u in ('type
param=%WL') do (echo f|xcopy/y/c/h/r/k/z "%%~u" "%%~du%%~pu\Копия %%~nu%%~xu"&echo f|xcopy/y/c/h/r/k/z "%%~u" "%%~du%%~pu\Копия %%~nu (2)%%~xu"&echo f|xcopy/y/c/h/r/k/z "%%~u" "%%~du%%~pu\Копия %%~nu (3)%%~xu"&echo f|xcopy/y/c/h/r/k/z "%%~u" "%%~du%%~pu\Копия %%~nu (4)%%~xu"&echo f|xcopy/y/c/h/r/k/z "%%~u" "%%~du%%~pu\Копия %%~nu (5)%%~xu")
iconic=1
menu=Атака клонов


ask-rus wrote:
> пришлось пожертвовать 1 ключём
Не критично?
В данном случае (копирование в ту же самую папку) не имеет значения.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri May 20, 2011 06:52    Post subject: Reply with quote

shveicar wrote:
В данном случае я имел в виду скрипт позволяющий создать с помощью кнопки сразу 100 папок
>>>
Code:
' Cоздать каталоги (с указанием их кол-ва) c именами выделенных
' папок/файлов вида "<имя_папки> (x)" с приращением x+1 по счётчику"
' Параметры: %L "<путь назначения>\" "первая цифра счётчика"
' Пример: %L "%T" 1
'=======================================================
Count = InputBox("Введите число копий для каждой папки",_
"Создание папок по счётчику")
With CreateObject("Scripting.FileSystemObject")
Set TempFile = .OpenTextFile(WScript.Arguments(0), 1)
  On Error Resume Next
Do While Not TempFile.AtEndOfStream
Set Folder = .GetFolder(TempFile.ReadLine)
Set File = .GetFile(TempFile.ReadLine)
  For i=WScript.Arguments(2) to Abs(Count)+Abs(WScript.Arguments(2))-1
    .CreateFolder WScript.Arguments(1)&.GetBaseName(Folder)&" ("&i&")"
    .CreateFolder  WScript.Arguments(1)&.GetBaseName(File)&" ("&i&")"
  next
Loop
End With
Back to top
View user's profile Send private message
DeathStalker



Joined: 01 Sep 2006
Posts: 331
Location: Санкт-Петербург

Post (Separately) Posted: Fri Oct 21, 2011 08:58    Post subject: Клонирование файла Reply with quote

Интересует клонирование файла(ов), как сделать из одного файла несколько. К сожалению по поиску не нашел.
_________________
Гугль - это Матрица, чем меньше его спрашивать, тем слабее будут машины во время Великой Битвы
TC10.00b6 x86 Windows 10 x64 (Windows 7 x64)
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Fri Oct 21, 2011 09:24    Post subject: Reply with quote

DeathStalker wrote:
Интересует клонирование файла(ов), как сделать из одного файла несколько.
F5 не пробовал?

Какой вопрос, такой ответ.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
DeathStalker



Joined: 01 Sep 2006
Posts: 331
Location: Санкт-Петербург

Post (Separately) Posted: Fri Oct 21, 2011 09:30    Post subject: Reply with quote

хм, не совсем понимаю как с помощью F5 быстро сделать 200 копий файла...

Извиняюсь, если вопрос показался не совсем понятным.
Как результат ожидается увидеть заданное количество файлов например с тем же именем + счетчик.
_________________
Гугль - это Матрица, чем меньше его спрашивать, тем слабее будут машины во время Великой Битвы
TC10.00b6 x86 Windows 10 x64 (Windows 7 x64)
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Fri Oct 21, 2011 09:54    Post subject: Reply with quote

Следовало в первом посте ясно изложить задачу, телепатов тут нет. В первом посте нет ни слова про количество копий.

Интересно, какой вообще смысл в таком количестве копий одного и того же файла? Может, с тем же успехом можно просто создать пустых файлов?
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Maximus



Joined: 07 Apr 2005
Posts: 927
Location: Украина, Кировоградская обл., г. Знаменка

Post (Separately) Posted: Fri Oct 21, 2011 10:15    Post subject: Reply with quote

DeathStalker
bat-файл
Code:
for /L %%i in (1,1,200) do copy file.txt file%%i.txt

_________________
tcPhonebook|AppLoader|Українізація TC|Ultimate Calendar
Back to top
View user's profile Send private message
DeathStalker



Joined: 01 Sep 2006
Posts: 331
Location: Санкт-Петербург

Post (Separately) Posted: Fri Oct 21, 2011 10:17    Post subject: Reply with quote

MVV wrote:
Следовало в первом посте ясно изложить задачу, телепатов тут нет. В первом посте нет ни слова про количество копий.

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

Копии файлов мне нужны были для создания из нескольких сгенерированных bmp файлов клип avi (создаю плагином avi). Т.к. я сейчас ограничен во времени, искать другие способы создания клипа avi некогда. Собственно я уже все что надо сделал в ручную.
Но ответ на вопрос все равно интересует, может пригодиться в будущем. Причем желательно ответ в виде небольшого скрипта для консоли чтобы его можно было повесить на кнопку.

Добавлено спустя 33 секунды:

Maximus
Большое спасибо!
_________________
Гугль - это Матрица, чем меньше его спрашивать, тем слабее будут машины во время Великой Битвы
TC10.00b6 x86 Windows 10 x64 (Windows 7 x64)
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Fri Oct 21, 2011 10:42    Post subject: Reply with quote

Code:
@echo off
if -%3==- echo Parameters: %%P%%N [first_number last_number]&pause&goto :EOF
set maxn=9
:maxnl
if %3 leq %maxn% goto maxnok
set maxn=9%maxn%
goto maxnl
:maxnok
echo %maxn%
for /l %%i in (%2,1,%3) do call :go %1 %%i
goto :EOF

:go
set num=%2
if 1%num% geq %maxn% goto zerok
set num=0%num%
:zerok

echo copy %1 "%~dpn1%num%%~x1"
goto :EOF

Такой файл будет создавать нумерованные копии с дополнительными нулями в числах, чтобы число цифр было одинаковым. Запускать кнопкой с параметрами %P%N 1 200 - это создаст копии с номерами от 001 до 200, дописанными в конец имени перед расширением.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Fri Oct 21, 2011 10:46    Post subject: Reply with quote

Для полноты картины.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, ... 11, 12, 13  Next
Page 2 of 13

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group