View previous topic :: View next topic |
Author |
Message |
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Mon May 02, 2011 18:17 Post subject: |
|
|
Тупо
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 |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue May 03, 2011 02:09 Post subject: |
|
|
Универсализируем?
Для тех, кому необходимо часто создавать статическое число копий:
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 |
|
|
ask-rus
Joined: 10 Nov 2009 Posts: 2076 Location: Russian Federation
|
(Separately) Posted: Tue May 03, 2011 09:00 Post subject: |
|
|
Tol!k wrote: | но чтобы уместить 5 копий в кнопку, пришлось пожертвовать 1 ключём |
Не критично? Чтобы идеально давай сократим до 3-х копий, у меня не выходит.
Добавлено спустя 13 минут 18 секунд:
Flasher wrote: | Хотя это легко поправимо |
Аналогично, не смог поправить. Менял две строки скрипта на эти три - ошибки. _________________ «Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue May 03, 2011 14:06 Post subject: |
|
|
ask-rus wrote: | Менял две строки скрипта на эти три - ошибки. | Значит учтено не всё: скрипт(1/2), параметры. Если второе, то и без замены ошибки будут. |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Mon May 09, 2011 12:07 Post subject: |
|
|
Предыстория. Если в имени есть & или ) и нет пробела, то 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 |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri May 20, 2011 06:52 Post subject: |
|
|
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 |
|
|
DeathStalker
Joined: 01 Sep 2006 Posts: 331 Location: Санкт-Петербург
|
(Separately) Posted: Fri Oct 21, 2011 08:58 Post subject: Клонирование файла |
|
|
Интересует клонирование файла(ов), как сделать из одного файла несколько. К сожалению по поиску не нашел. _________________ Гугль - это Матрица, чем меньше его спрашивать, тем слабее будут машины во время Великой Битвы
TC10.00b6 x86 Windows 10 x64 (Windows 7 x64) |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Fri Oct 21, 2011 09:24 Post subject: |
|
|
DeathStalker wrote: | Интересует клонирование файла(ов), как сделать из одного файла несколько. | F5 не пробовал?
Какой вопрос, такой ответ. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
DeathStalker
Joined: 01 Sep 2006 Posts: 331 Location: Санкт-Петербург
|
(Separately) Posted: Fri Oct 21, 2011 09:30 Post subject: |
|
|
хм, не совсем понимаю как с помощью F5 быстро сделать 200 копий файла...
Извиняюсь, если вопрос показался не совсем понятным.
Как результат ожидается увидеть заданное количество файлов например с тем же именем + счетчик. _________________ Гугль - это Матрица, чем меньше его спрашивать, тем слабее будут машины во время Великой Битвы
TC10.00b6 x86 Windows 10 x64 (Windows 7 x64) |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
Maximus
Joined: 07 Apr 2005 Posts: 927 Location: Украина, Кировоградская обл., г. Знаменка
|
|
Back to top |
|
|
DeathStalker
Joined: 01 Sep 2006 Posts: 331 Location: Санкт-Петербург
|
(Separately) Posted: Fri Oct 21, 2011 10:17 Post subject: |
|
|
MVV wrote: | Следовало в первом посте ясно изложить задачу, телепатов тут нет. В первом посте нет ни слова про количество копий. |
Если бы мне нужно 1 копия файла, я бы тему не создавал.
Копии файлов мне нужны были для создания из нескольких сгенерированных bmp файлов клип avi (создаю плагином avi). Т.к. я сейчас ограничен во времени, искать другие способы создания клипа avi некогда. Собственно я уже все что надо сделал в ручную.
Но ответ на вопрос все равно интересует, может пригодиться в будущем. Причем желательно ответ в виде небольшого скрипта для консоли чтобы его можно было повесить на кнопку.
Добавлено спустя 33 секунды:
Maximus
Большое спасибо! _________________ Гугль - это Матрица, чем меньше его спрашивать, тем слабее будут машины во время Великой Битвы
TC10.00b6 x86 Windows 10 x64 (Windows 7 x64) |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Fri Oct 21, 2011 10:42 Post subject: |
|
|
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 |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
|
Back to top |
|
|
|