переместить файлы по папкам согласно расширению
Код:
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?
|
Дешевле купить новое. :)
Код:
@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
|
О, он даже сам себя не перемещает, как удобно
А то приходилось после выполнения каждый раз в папку bat заглядывать и удалять сам скрипт
|
Цитата:
Цитата shadowbat
О, он даже сам себя не перемещает, как удобно
А то приходилось после выполнения каждый раз в папку bat заглядывать и удалять сам скрипт »
|
Если каждый раз бросать батник в обрабатываемую папку и затем удалять его - это мазохизм по методу Петрова.
Цитата:
Цитата megaloman
Лучше не копировать батник в обрабатываемую папку. Создайте его в каком-либо месте и на рабочем столе создайте только ярлык на него. В проводнике выбирайте нужную для обработки папку и мышкой затаскивайте его на этот ярлык. Вариант для такой работы. »
|
Код:
@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
|
Копирование в папки с именем расширения
Код:
@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
|
Цитата:
Цитата megaloman
Проверьте у себя мой код »
|
2й код работает
Цитата:
Цитата alpap
Копирование в папки с именем расширения »
|
1й код
не работает с папкой C:\!! test - копия , из-за "!! ", без воскл знаков работает
Цитата:
Цитата alpap
Копировать по расширениям »
|
2й код
set "in=%CD%"
set "out=%CD%"
поверх самого себя
set "in=%CD%"
set "out=%CD%\111"
копирует каждый файл в файл "111" с его перезаписью
Цитата:
Цитата alpap
Копировать файлы по расширениям в папки по порядку по номеру »
|
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
|
моего?
Код:
@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
|
код из шапки темы
теперь этот код работает даже с "!!" в имени
---------------------------------------------
итого в теме 5 решений на любой вкус и 1 работающее но не очень красивое решение в шапке
пусть тема будет решённой тогда
|
Время: 21:15.
© OSzone.net 2001-