Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Как сделать так, что бы для каждого файла в папке был отдельный архив с именем файла и расширением .zip ?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Set objArgs = WScript.Arguments
InputFolder = "c:\Rezerv"
ZipFile = "c:\zip\1.zip"
CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar)
Set objShell = CreateObject("Shell.Application")
Set source = objShell.NameSpace(InputFolder).Items
objShell.NameSpace(ZipFile).CopyHere(source)
 
Do Until objShell.NameSpace(ZipFile).Items.Count = objShell.NameSpace(InputFolder).Items.Count
   WScript.Sleep 500 ' Arbitrary polling delay
Loop  

Данный код архивирует файлы из папки Rezerv в папку zip(создает архив 1.zip). Подскажите как сделать так, что бы для каждого файла в папке был отдельный архив с именем файла и расширением .zip. Так же подскажите как сделать фильтр, что бы архивировались только файлы с определенным разрешением, например .accdb.
Ответ: egoistos, дык обработку файлом скопом осилили, значит и по одному жать не проблема:
Javascript
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
(function(src, des) {
  var e, i = 1, itm, zip, shl = new ActiveXObject('Shell.Application');
  
  try {
    with (new ActiveXObject('Scripting.FileSystemObject')) {
      e = new Enumerator(GetFolder(GetAbsolutePathName(src)).Files);
      for (; !e.atEnd(); e.moveNext()) {
        itm = GetAbsolutePathName(des) + '\\' + GetBaseName(e.item()) + '.zip';
        itm = FileExists(itm) ? itm.replace(/.zip$/i, i + '.zip') : itm;
        
        zip = CreateTextFile(itm, true)
        zip.Write("PK\05\06" + new Array(19).join("\0"));
        zip.Close();
        
        shl.NameSpace(GetFile(itm).Path).CopyHere(e.item().Path);
        WScript.Sleep(500);
        WScript.StdOut.Write(itm + '.......created\r');
        
        i++;
      }
    }
  }
  catch (e) { WScript.echo(e); }
}(
  WScript.Arguments.length !== 2
  ? WScript.Quit(1)
  : WScript.Arguments.Unnamed(0), WScript.Arguments.Unnamed(1)
));
Что до фильтра, то достаточно в цикле ввести проверку на нужное расширение (GetExtensionName).
Вопрос: имя файла без расширения в CMD

Доброе время суток !

Работаю со списком файлов:
@for /f "" %%i in ('dir /B /d IN\*.xml') do (

)

Внутри цикла надо получить имя файла без расширения, как это возможно ?
Ответ: 20150627172819_8123231233121@12098599@sip.zebra.ru.mp3
такого вида файлы ваша команда режет :)
так что тупой вариант не подойдет.
Вопрос: Смена иконки файла определенного расширения

В виндовс 7 все неопознанные программами файлы имеют иконку белого листа. Я работаю с музыкой, иногда в фолдере рабочего проекта скапливается несколько временных рабочих подобных файлов с одинаковой картинкой но разными расширениями и по сему однотипность картинок путает меня. Они подлежат удалению но они путаются среди нужных файлов. Я решил поменять картинку одному типу файлов с расширением GPK. Я сделал Open With....ну как бы картинку присвоить тому редактору которому дам его скушать. Но вместе с картинкой теперь прописывается лишнее расширение .wav. что ещё больше вносит сумятицу. Я дал скушать нотепаду, пайнту, инет-эксплореру и картинки то менялись соответственно с ними, но расширение wav.gpk всё время пишется одинаково.

Вот как было...



Как стало...



Как избавится что-бы Wavelab прописывал только GKP опять...?????? Я не продвинутый юзер и по сему если что на пальцах поясните.

Cпасибо.
Ответ: Те файлы, которые уже получили "прицеп" .wav - видимо - надо просто переименовать. Главное, чтобы новые и уже переименованные файлы не получили эту добавку
Вопрос: Как получить имя файла без расширения?

Добрый день.
подскажите как получить чистое имя файла в цикле:
Windows Batch file
1
for %%i in (%s1path%\*.pdf) do if exist %s1path%\%%~ni.pdf icacls %s1path%\%%~ni.pdf /grant:r %%i:R
%%i выводит с расширением...

Добавлено через 5 минут
Вместо %%i нужно %~n1 поставить
Ответ:
Сообщение от Владимир23
Вместо %%ш нужно %~n1 поставить
если в bat, то вообще-то %%~ni, вы также имя даете .pdf.
Вопрос: вывод в файл имена файлов с расположением за день

появилась следующая задача, формировать каждый день выходной файл, в котором должны присутствовать файлы, созданные пользователями за день.

В директории присутствуют также и подпапки, данную задачу пробовала решить совместным использование. dir и find, но не устраивает вывод, получалось только сформировать имена файлов без их расположения.

Вывод должен быть примерно, следующий

/subfolder1/test1.txt

/subfolder2/test2.txt

Заранее спасибо.
Ответ: попробуй так
FORFILES /S /D 0 /P C:\#01 /M *.txt /C "cmd /c if @file neq ""ИМЯ""echo @path"
ИМЯ - имя файла без расширения
Вопрос: Удалить пробелы в конце имени файлов (перед расширением)

Добрый день.

Нужна помощь специалистов в решение ( на первый взгляд ) простой проблемы. Суть :

C:\Test ( имеет подкаталоги) находятся файлы (с разным разширением), и нужно поудалять все пробелы в конце имени файлов.

исходник: Kari K - Interview Mister .jpg на выходе Kari K - Interview Mister.jpg


Пробелов может быть несколько.
Разширение файлов может быть разное.

Спасибо всем, кто откликнулся.

Добавлено через 6 минут
( также надо учитать то, что в самом имени файла нужно сохранить пробелы, а удалить пробелы только перед разширением)
Ответ:
Сообщение от Myrena_fox
но когда 5 подпапок , возникает ошибка - достигнут уровень рекурсии
А, да... совсем забыл проверить...
Тогда так:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off
set "dir=c:\Test"
set "mask=*.jpg"
set "suffix=_cover"
pushd "%dir%"&& (
for /f "delims=" %%i in ('2^>nul dir/a-d/b/s "%mask%"') do (
    set "pth_n=%%~i"
    set "var=%%~ni"
    set "ext=%%~xi"
    call :trim
    )
)
popd
pause&exit
 
:trim
if "%var:~-1%"==" " (set "var=%var:~0,-1%"&goto trim)
ren "%pth_n%" "%var%%suffix%%ext%"
exit /b
Добавлено через 41 секунду
Сообщение от Myrena_fox
Нашел другое решение вопроса о рекурсии
Какое?
Вопрос: Резервное копирование файлов с определенными расширениями из разных каталогов с возможностью создания резервно

Резервное копирование файлов с определенными расширениями из разных каталогов с возможностью создания резервного каталога, если его нет в системе. Как можно сделать так, чтобы ,например, из каталога temp и каталога test все их содержимое(которое задается параметром(например txt)) копировало в каталог dexter
и надо сделать так что бы могло копировать не только txt,а еще например doc
Ответ: Код пакетного файла:
Код Windows Batch file
1
@cd/d "%~dp0"& for %%i in ("temp" "test") do @for %%j in (%*) do @xcopy/hkry "%%~i\*.%%~j" "dexter\"
.

Пакетный файл должен находиться в той же директории, что и каталоги "temp" и "test". Если каталога "dexter" в этой же директории не существует, то он будет создан.

Запускать пакетный файл нужно из командной строки с помощью примерно таких команд:
Код Windows Batch file
1
"D:\Work\my.bat" txt
;
Код Windows Batch file
1
"D:\Work\my.bat" doc
;
Код Windows Batch file
1
"D:\Work\my.bat" txt doc
;
Код Windows Batch file
1
"D:\Work\my.bat" txt doc zip
.

Какие расширения файлов введёте (любое количество расширений), такие файлы и будут скопированы. В случае совпадения имён файлы будут заменяться.
Вопрос: Копирование файлов с определёнными расширениями

Копирование файлов с определенным расширением.
Поле ввода расширения (cpp, pas).

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim objFSO, objFile, strEXT
Dim strSource, strDest
Dim lngAttributes
 
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
 
strEXT = "cpp"
strEXT = "pas"
strSource = "C:\1"
strDest   = "C:\2"
 
If objFSO.FolderExists(strSource) Then
If objFSO.FolderExists(strDest) Then
            
For Each objFile In objFSO.GetExtensionName(objFile.Path)
If (objFile.Path)=strEXT Then
WScript.Echo objFile.Name
objFile.Copy objFSO.BuildPath(strDest, objFile.Name), True
End If
Next
End If
End If
Set objFSO = Nothing
WScript.Quit 0
надо как то сделать чтобы при вводе одного расширения выполнялась процедура копирования всех файлов с таким расширением в другой каталог...какую процедуру вставить ума не приложу((( помогите пожалуйста...
Ответ: еще вариант на vbs, можно сразу много расширений
Visual Basic
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
'Копирование файлов с определенным расширением
 
Exts = "*.3gp;*.asf;*.avi; *.mkv; *.mov;*.mp4;*.mpg;*.wmv;*.vob"
 
input="c:\00"        'откуда
output= "c:\000"     'куда
 
 
Set Shell = CreateObject("Shell.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WSHShell = WScript.CreateObject("WScript.Shell")
 
 
If not objFSO.FolderExists(output) Then objFSO.CreateFolder output          'создаем output
 
Perenos input,output, Exts                  ' Копирование файлов с input в output
 
 
Sub Perenos(Folder, Folder2, Exts)
  Set objFolder = Shell.NameSpace(Folder)
  Set objItems  = objFolder.Items
  objItems.Filter 192, Exts
  For Each File in objItems
 
 objFSO.CopyFile File.Path, Folder2         
 
  Next 
End Sub
Вопрос: Проверка наличия файла с определённым расширением

Добрый вечер!

Есть некая папка с большим количеством вложенных папок и файлов разных расширений.
Подскажите, как можно быстро найти в указанной папке файл определённого расширения? Например я ищу файл формата PNG, мне надо чтобы система проанализировала и выдала "1" если найден хотя бы один такой файл, если не найден то "0". И самое сложное как прервать поиск файлов, если найден файл с таким расширением, чтобы не анализировать все файлы?
Ответ: lorents, можно:
Код Windows Batch file
1
@cmd/c "(for /r "C:\Test" %%i in ("*.jpe" "*.jpeg" "*.jpg") do @echo 1& exit/b)& echo 0"& pause>nul
.
Вопрос: Распределение файлов из папки по части имени файла в папки, содержащие файлы с похожим именем (квитовка)

Добрый день!
Искал по форуму, но мне не удалось найти похожее решение.

К примеру имеется каталог K:\365P\notdefined. В нем находятся файлы, с именами KWTFCB*XXXXXX.TXT, KWTFCB*YYYYYY.TXT и т.д., где XXXXXX, YYYYYY - это произвольные числа, например 030929, 024714 и т.д.

Общая черта всех этих файлов - "KWTFCB" в начале имени файла.
Имеется структура каталогов, например "K:\365P\11-12-2015\1" в которых есть файлы, содержащие "*XXXXXX.TXT", "*YYYYYY.TXT" и т.д.

Стоит задача написать bat-файл, который рассортирует файлы из "K:\365P\notdefined" в каталоги, в которых будут найдены схожие файлы.

Пример:

K:\365P\notdefined\KWTFCB_PB1_ZNO14525663_770520151223_030929.TXT нужно поместить в папку K:\365P\24-12-2015\1, содержащую файл ZNO14525663_770520151223_030929.txt

Каким образом можно реализовать подобное сравнение файлов по маске, чтобы в папку, содержащую файлы, с заданной маской были добавлены файлы с заданной маской из папки назначения.
Ответ:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
setlocal enabledelayedexpansion;
set "A=K:\365P\notdefined"
set "B=K:\365P"
 
rem перебираем все файлы с расширением *.txt в каталоге A и всех его подкаталогах
for /R %B% %%I in (*.txt) do (
    rem извлекаем имя файла
    set f=%%~nI
    rem копируем из A в B соответствующий файл
    copy %A%kwtf*!f:~-6!.txt %%~dpI
)