Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Вот исправленный .bat файл, который будет искать только один файл в папке_1, название которого полностью совпадает с названием файла из папки_2:этот скрипт пишет, что находит каждый файл в каждой из подпапок, в то время как для каждого файла из папки_2 существует только один файл в папке_1, название которого полностью совпадает. нужно переписать код, чтобы скрипт работал корректно
@echo off
setlocal enabledelayedexpansion
set "folder_1=E:\folder_1"
set "folder_2=E:\folder_2"
for %%F in ("%folder_2%\*.*") do (
set "found=false"
for /r "%folder_1%" %%G in (*) do (
set "file1=%%~nxF"
set "file2=%%~nxF"
if /I "!file1!"=="!file2!" (
echo Найден файл "%%~nxF" в подпапке "%%~dpG"
set "found=true"
pause
goto :nextfile
)
)
if not !found! == true (
echo Файл "%%~nxF" не найден в %folder_1%
)
:nextfile
)
endlocal
не работает. давай попробуем иначе. имена файлов, которые нужно сравнивать, имеют формат «Видеоролик Поста № xxxx.mp4», где «xxxx» — это четырёхзначное число. отличаются имена только этим числом. напиши код .bat файла, который будет сравнивать номер в имени файла из папки_2 с номерами файлов их подпапок папки_1, и если номер в имени совпадёт, выведет на экран название подпапки, в которой был найден файл. После нажатия любой клавиши скрипт продолжит поиск для следующего файла из папки_2.
@echo off
setlocal enabledelayedexpansion
set "folder_1=E:\folder_1"
set "folder_2=E:\folder_2"
for %%F in ("%folder_2%\*.mp4") do (
set "found=false"
set "filename=%%~nF"
set "number=%%~nF"
set "number=!number:~-4!"
for /r "%folder_1%" %%G in (*.mp4) do (
set "foldername=%%~dpG"
set "foldernumber=%%~nG"
set "foldernumber=!foldernumber:~-4!"
if !number! equ !foldernumber! (
echo Найден файл "!filename!" в подпапке "!foldername!"
set "found=true"
pause
goto :nextfile
)
)
if not !found! == true (
echo Файл "!filename!" не найден в %folder_1%
)
:nextfile
)
endlocal
имена файлов, которые нужно сравнивать, имеют формат «Видеоролик Поста № xxxx.mp4», где «xxxx» — это четырёхзначное число. отличаются имена только этим числом. напиши код .bat файла, который будет сравнивать номер в имени файла из папки_2 с номерами в именах файлов из подпапок папки_1, и если номер в имени совпадёт, выведет на экран название подпапки, в которой был найден файл. После нажатия любой клавиши скрипт продолжит поиск для следующего файла из папки_2.
@echo off
setlocal enabledelayedexpansion
set "folder_1=E:\folder_1"
set "folder_2=E:\folder_2"
for %%F in ("%folder_2%\*.mp4") do (
set "found=false"
set "filename=%%~nF"
set "number=%%~nF"
set "number=!number:~-4!"
for /r "%folder_1%" %%G in (*.mp4) do (
set "foldernumber=%%~nG"
set "foldernumber=!foldernumber:~-8,4!"
if !number! equ !foldernumber! (
echo Найден файл "!filename!" в подпапке "%%~dpG"
set "found=true"
pause
goto :nextfile
)
)
if not !found! == true (
echo Файл "!filename!" не найден в %folder_1%
)
:nextfile
)
endlocal
Извините за предыдущие ошибки. Давайте попробуем еще раз:не работает. вообще ничего не происходит
@echo off
setlocal enabledelayedexpansion
set "folder_1=E:\folder_1"
set "folder_2=E:\folder_2"
for %%F in ("%folder_2%\*.mp4") do (
set "found=false"
set "filename=%%~nF"
set "number=%%~nF"
set "number=!number:~-8,4!"
for /r "%folder_1%" %%G in (*.mp4) do (
set "foldernumber=%%~nG"
set "foldernumber=!foldernumber:~-8,4!"
if !number! equ !foldernumber! (
echo Найден файл "!filename!" в подпапке "%%~dpG"
set "found=true"
pause
goto :nextfile
)
)
if not !found! == true (
echo Файл "!filename!" не найден в %folder_1%
)
:nextfile
)
endlocal
@echo off
setlocal enabledelayedexpansion
rem Set the paths
set "folder1=E:\folder_1"
set "folder2=E:\folder_2"
set "folder3=E:\folder_3"
rem Ensure folder3 exists
if not exist "%folder3%" mkdir "%folder3%"
rem Change to folder2 directory
pushd "%folder2%"
rem Loop through each file in folder2
for %%F in (*) do (
set "filename=%%~nxF"
echo Processing file: !filename!
rem Search for the file in folder1 subfolders
for /r "%folder1%" %%G in (!filename!) do (
set "foundpath=%%G"
set "subfolder=%%~dpG"
rem Replace the file in the subfolder with the file from folder2
echo Moving !filename! to !subfolder!
move "%%F" "!subfolder!"
rem Copy the modified subfolder to folder3
echo Copying modified subfolder to %folder3%
xcopy "!subfolder!" "%folder3%\%%~nxdG\" /E /I /Y
rem Exit the inner loop after finding and copying one match
goto :continue
)
rem If no match was found
echo No match found for !filename! in %folder1%
pause
:continue
)
rem Return to the original directory
popd
echo All files processed.
pause
endlocal
Пожалуйста, уточните, что именно вам необходимо изменить в предоставленном коде? Требуется ли какая-то конкретная корректировка или дополнение функциональности?Код:@echo off setlocal enabledelayedexpansion rem Set the paths set "folder1=E:\folder_1" set "folder2=E:\folder_2" set "folder3=E:\folder_3" rem Ensure folder3 exists if not exist "%folder3%" mkdir "%folder3%" rem Change to folder2 directory pushd "%folder2%" rem Loop through each file in folder2 for %%F in (*) do ( set "filename=%%~nxF" echo Processing file: !filename! rem Search for the file in folder1 subfolders for /r "%folder1%" %%G in (!filename!) do ( set "foundpath=%%G" set "subfolder=%%~dpG" rem Replace the file in the subfolder with the file from folder2 echo Moving !filename! to !subfolder! move "%%F" "!subfolder!" rem Copy the modified subfolder to folder3 echo Copying modified subfolder to %folder3% xcopy "!subfolder!" "%folder3%\%%~nxdG\" /E /I /Y rem Exit the inner loop after finding and copying one match goto :continue ) rem If no match was found echo No match found for !filename! in %folder1% pause :continue ) rem Return to the original directory popd echo All files processed. pause endlocal
к сожалению, ничего не происходитКод:@echo off setlocal enabledelayedexpansion rem Set the paths set "folder1=E:\folder_1" set "folder2=E:\folder_2" set "folder3=E:\folder_3" rem Ensure folder3 exists if not exist "%folder3%" mkdir "%folder3%" rem Change to folder2 directory pushd "%folder2%" rem Loop through each file in folder2 for %%F in (*) do ( set "filename=%%~nxF" echo Processing file: !filename! rem Search for the file in folder1 subfolders for /r "%folder1%" %%G in (!filename!) do ( set "foundpath=%%G" set "subfolder=%%~dpG" rem Replace the file in the subfolder with the file from folder2 echo Moving !filename! to !subfolder! move "%%F" "!subfolder!" rem Copy the modified subfolder to folder3 echo Copying modified subfolder to %folder3% xcopy "!subfolder!" "%folder3%\%%~nxdG\" /E /I /Y rem Exit the inner loop after finding and copying one match goto :continue ) rem If no match was found echo No match found for !filename! in %folder1% pause :continue ) rem Return to the original directory popd echo All files processed. pause endlocal
есть вот такой код:
@echo off
setlocal enabledelayedexpansion
set "folder_1=E:\folder_1"
set "folder_2=E:\folder_2"
set "folder_3=E:\folder_3"
for %%F in ("%folder_2%\.") do (
set "found=false"
for /r "%folder_1%" %%G in (*) do (
set "file1=%%~nxF"
set "file2=%%~nxG"
if /I "!file1!"=="!file2!" (
echo Найден файл "%%~nxF" в подпапке "%%~dpG"
move "%%F" "%%~dpG" >nul 2>&1
xcopy "%%~dpG" "%folder_3%\%%~nxG\" /s /e /y >nul 2>&1
set "found=true"
)
)
if not !found! == true (
echo Файл "%%~nxF" не найден в %folder_1%
)
)
endlocal
он работает, но с ошибкой: находит подпапку с нужным файлом, заменяет его, копирует подпапку и переименовывает её, используя в качестве имени название файла. нужно исправить код, чтобы название копируемой папки осталось прежним
@echo off
setlocal enabledelayedexpansion
set "folder_1=E:\folder_1"
set "folder_2=E:\folder_2"
set "folder_3=E:\folder_3"
for %%F in ("%folder_2%\*") do (
set "found=false"
for /r "%folder_1%" %%G in (*) do (
set "file1=%%~nxF"
set "file2=%%~nxG"
if /I "!file1!"=="!file2!" (
echo Найден файл "%%~nxF" в подпапке "%%~dpG"
move "%%F" "%%~dpG" >nul 2>&1
xcopy "%%~dpG" "%folder_3%\%%~nxG\" /s /e /y >nul 2>&1
set "found=true"
)
)
if not !found! == true (
echo Файл "%%~nxF" не найден в %folder_1%
)
)
endlocal
нет, не работает. оригинальное имя папки не сохраняется, папке присваивается имя файла. нужно, чтобы имя папки сохранилось
@echo off
setlocal enabledelayedexpansion
set "folder_1=E:\folder_1"
set "folder_2=E:\folder_2"
set "folder_3=E:\folder_3"
for %%F in ("%folder_2%\*") do (
set "found=false"
for /r "%folder_1%" %%G in (*) do (
set "file1=%%~nxF"
set "file2=%%~nxG"
if /I "!file1!"=="!file2!" (
echo Найден файл "%%~nxF" в подпапке "%%~dpG"
move "%%F" "%%~dpG" >nul 2>&1
xcopy "%%~dpG" "%folder_3%\%%~nxG\" /s /e /y >nul 2>&1
set "found=true"
)
)
if not !found! == true (
echo Файл "%%~nxF" не найден в %folder_1%
)
)
endlocal
этот код делает то же самое, меняет имя копируемой папкиКод:@echo off setlocal enabledelayedexpansion set "folder_1=E:\folder_1" set "folder_2=E:\folder_2" set "folder_3=E:\folder_3" for %%F in ("%folder_2%\*") do ( set "found=false" for /r "%folder_1%" %%G in (*) do ( set "file1=%%~nxF" set "file2=%%~nxG" if /I "!file1!"=="!file2!" ( echo Найден файл "%%~nxF" в подпапке "%%~dpG" move "%%F" "%%~dpG" >nul 2>&1 xcopy "%%~dpG" "%folder_3%\%%~nxG\" /s /e /y >nul 2>&1 set "found=true" ) ) if not !found! == true ( echo Файл "%%~nxF" не найден в %folder_1% ) ) endlocal
Попробуйте использовать этот исправленный код. Он должен находить файлы в папке_2, ищет соответствующие файлы в папке_1, перемещает их, копирует в папку_3, сохраняя оригинальное имя папки. Пожалуйста, попробуйте его и сообщите, если возникнут какие-либо проблемы.
этот код делает то же самое, меняет имя копируемой папки
{"ignore": true}