CMD/BAT - [решено] переместить файлы по папкам согласно расширению

Ответить
Аватара пользователя
shadowbat

CMD/BAT - [решено] переместить файлы по папкам согласно расширению

Сообщение shadowbat »

Код:

Код: Выделить всё

chcp 1251
@Echo OFF
Set "Folder=%CD%"
Set "DestDir=%CD%"
FOR /R "%Folder%" %%# in ("*") DO (
set "ext=%%~x#"
If not exist "%DestDir%\%%ext:~1%%" (call MKDIR "%DestDir%\%%ext:~1%%")
call Echo [+] Moving: "%%ext:~1%%"
call Move "%%#" "%DestDir%\%%ext:~1%%\" 1>NUL
)
Pause
Exit

в этом коде не выполняется

1. проверка "If not exist" - т.е. в лог выводится постоянно ошибка, что папка существует

2. Pause перед выходом - не паузится чтобы посмотреть лог

но в принципе свою задачу выполняет, только без удобств



как починить п1 п2?
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] переместить файлы по папкам согласно расширению

Сообщение megaloman »

Цитата shadowbat:



как их починить?
CMD/BAT - [решено] переместить файлы по папкам согласно расширению




Дешевле купить новое. Изображение

Код:

Код: Выделить всё

@Echo Off
cls
>nul Chcp 1251
 	Set "BoxIn=%~dp0"
	If "%BoxIn:~-1%"=="\" Set "BoxIn=%BoxIn:~0,-1%"
	Set "BoxOut=%BoxIn%" 
rem	Set "BoxOut=Z:\Box_Out" 
	Attrib +R +H "%~dpnx0"
	FOR /F "usebackq delims=" %%f In (`2^>nul Where "%BoxIn%":"*.?*" ^|Find /I /V "%~dpnx0"`) DO (
		If Exist "%%f" (
			Set "Ext=%%~xf"
			2>nul Call MD "%BoxOut%\%%Ext:~1%%"
			>nul Call Move "%%~dpf*%%~xf" "%BoxOut%\%%Ext:~1%%\"
		)
	)
	Attrib -R -H "%~dpnx0"
Pause
Exit /B
Аватара пользователя
shadowbat

Re: CMD/BAT - [решено] переместить файлы по папкам согласно расширению

Сообщение shadowbat »

Цитата megaloman:



Дешевле купить новое.
CMD/BAT - [решено] переместить файлы по папкам согласно расширению




О, он даже сам себя не перемещает, как удобно

А то приходилось после выполнения каждый раз в папку bat заглядывать и удалять сам скрипт
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] переместить файлы по папкам согласно расширению

Сообщение megaloman »

Цитата shadowbat:



О, он даже сам себя не перемещает, как удобно

А то приходилось после выполнения каждый раз в папку bat заглядывать и удалять сам скрипт
CMD/BAT - [решено] переместить файлы по папкам согласно расширению




Если каждый раз бросать батник в обрабатываемую папку и затем удалять его - это мазохизм по методу Петрова.


Цитата megaloman:



Лучше не копировать батник в обрабатываемую папку. Создайте его в каком-либо месте и на рабочем столе создайте только ярлык на него. В проводнике выбирайте нужную для обработки папку и мышкой затаскивайте его на этот ярлык. Вариант для такой работы.
CMD/BAT - [решено] вставить две пустых строки в copy bin






Код:

Код: Выделить всё

@Echo Off
cls
>nul Chcp 1251
	If "%~1"=="" (Echo Bat File "%~dpnx0" mast run with argument: folder path. Press any key. &>nul Pause &Exit /B)
 	Set "BoxIn=%~1"
	If "%BoxIn:~-1%"=="\" Set "BoxIn=%BoxIn:~0,-1%"
	Set "BoxOut=%BoxIn%" 
	FOR /F "usebackq delims=" %%f In (`2^>nul Where "%BoxIn%":"*.?*"`) DO (
		If Exist "%%f" (
			Set "Ext=%%~xf"
			2>nul Call MD "%BoxOut%\%%Ext:~1%%"
			>nul Call Move "%%~dpf*%%~xf" "%BoxOut%\%%Ext:~1%%\"
		)
	)
Echo Press any key. &>nul Pause
Exit /B
Аватара пользователя
alpap

Re: CMD/BAT - [решено] переместить файлы по папкам согласно расширению

Сообщение alpap »

Копирование в папки с именем расширения



Код:

Код: Выделить всё

@echo off
setlocal enabledelayedexpansion
set "in=papka_in"
set "out=papka_out"
for /f "delims=" %%a in ('dir /a-d/b/s "%in%"') do (set "rf=%%~xa"& if not exist "%out%\!rf:~1!" md "%out%\!rf:~1!")& copy "%%~a" "%out%\!rf:~1!"
exit

Копировать по расширениям



Код:

Код: Выделить всё

@echo off
set "in=papka_in"
set "out=papka_out"
set "rf=txt bat docx"
for %%i in (%rf%) do for %%j in ("%in%\*.*") do if ".%%~i"=="%%~xj" copy "%%~j" "%out%"
pause

Копировать файлы по расширениям в папки по порядку по номеру



Код:

Код: Выделить всё

@echo off
set "d_in=papka_in"
set "d_out=papka_out"
for /f "delims=" %%a in ('2^>nul dir /a-d/b/s "%d_in%\*"') do set rf%%~xa=%%~xa
for /f "tokens=2 delims==" %%a in ('set rf') do set/a nr+=1& cmd/v/c xcopy "%d_in%\*%%~a" "%d_out%\!nr!\"
pause
Аватара пользователя
shadowbat

Re: CMD/BAT - [решено] переместить файлы по папкам согласно расширению

Сообщение shadowbat »

Цитата megaloman:



Проверьте у себя мой код
»




2й код работает


Цитата alpap:



Копирование в папки с именем расширения
CMD/BAT - [решено] переместить файлы по папкам согласно расширению




1й код

не работает с папкой C:\!! test - копия , из-за "!! ", без воскл знаков работает




Цитата alpap:



Копировать по расширениям
CMD/BAT - [решено] переместить файлы по папкам согласно расширению




2й код



set "in=%CD%"

set "out=%CD%"

поверх самого себя



set "in=%CD%"

set "out=%CD%\111"

копирует каждый файл в файл "111" с его перезаписью




Цитата alpap:



Копировать файлы по расширениям в папки по порядку по номеру
CMD/BAT - [решено] переместить файлы по папкам согласно расширению




3й код

работает

------------------------------

Код из 1го сообщения в теме не подлежит починке?

изначально был такой и делал папки с точкой, а в 1ом сообщении была попытка переделать на вариант без точки



Код:

Код: Выделить всё

chcp 1251
@Echo OFF
Set "Folder=%CD%"
Set "DestDir=%CD%"
FOR /R "%Folder%" %%# in ("*") DO (
    If not exist "%DestDir%\%%~x#" (MKDIR "%DestDir%\%%~x#")
    Echo [+] Moving: "%%~nx#"
    Move "%%#" "%DestDir%\%%~x#\" 1>NUL
)
Pause
Exit
Аватара пользователя
alpap

Re: CMD/BAT - [решено] переместить файлы по папкам согласно расширению

Сообщение alpap »

Цитата shadowbat:



Код из 1го сообщения
CMD/BAT - [решено] переместить файлы по папкам согласно расширению




моего?



Код:

Код: Выделить всё

@echo off
set "in=papka_in"
set "out=papka_out"
for /f "delims=" %%a in ('dir /a-d/b/s "%in%"') do set "rf=%%~xa"& call :# "%%~a" "%%rf:~1%%"
pause& exit
:#
  if not exist "%out%\%~2" md "%out%\%~2"
  copy "%~1" "%out%\%~2"
exit /b
Аватара пользователя
shadowbat

Re: CMD/BAT - [решено] переместить файлы по папкам согласно расширению

Сообщение shadowbat »

Цитата alpap:



моего?
CMD/BAT - [решено] переместить файлы по папкам согласно расширению




код из шапки темы


Цитата alpap:



код
CMD/BAT - [решено] переместить файлы по папкам согласно расширению




теперь этот код работает даже с "!!" в имени

---------------------------------------------

итого в теме 5 решений на любой вкус и 1 работающее но не очень красивое решение в шапке

пусть тема будет решённой тогда
Ответить

Вернуться в «Скриптовые языки администрирования Windows»