Create / troubleshoot a batch file that moves folders based on criteria
$30-250 USD
Selesai
Dibuat lebih dari 7 tahun yang lalu
$30-250 USD
Dibayar ketika dikirim
I need a batch file to assess subfolders and if they meet certain criteria then they get moved to a new folder.
I have tried to do it myself but have not been successful. Below I have an outline of my work so far.
Folder structure is something like this Main folder is:
I:\Test\divideandconquer\Newfolder\
In that folder there can be an number of different subfolders. eg
I:\Test\divideandconquer\Newfolder\106-foldername
What I want is a batch that compares the first 3 numbers of the folder name (in this case 106) with the number of files in that folder. If the two numbers match then the criteria is met and the folder should be moved to:
I:\Test\divideandconquer\moved\
I have a working batch that can compare the two numbers and return a value.
@echo off
setlocal disableDelayedExpansion
pushd I:\Test\divideandconquer\Newfolder
set "files="
for /r %%F in (*) do call set files=%%files%% %%F
echo %files%
set files=%files:~36,3%
echo %files%
pushd I:\Test\divideandconquer\Newfolder\*1*
set actual=100
for %%x in (*) do set /a actual+=1
echo %actual%
IF %actual% EQU %files% echo same | clip
I also have found a batch that can move folders based on criteria being met (found it on stackoverflow).
for /d %%A in (*) do (
dir /b %%A\*.txt >nul 2>&1 && move %%A "folders with txt"
)
But of course the criteria are not right. To make it work I think I need to change
dir /b %%A\*.txt >nul 2>&1
to check my IF %actual% EQU %files% result but I dont know how to combine the two codes.
=====================
UPDATE
I tried a few things including...
@echo off
setlocal disableDelayedExpansion
pushd I:\Test\divideandconquer\Newfolder
set "files="
for /r %%F in (*) do call set files=%%files%% %%F
echo %files%
set files=%files:~36,3%
echo %files%
pushd I:\Test\divideandconquer\Newfolder\*1*
set actual=100
for %%x in (*) do set /a actual+=1
echo %actual%
IF %actual% EQU %files% THEN (
set result=1
)
for /d %%a in (*) do (
set /a oktomove=result - %%a
if !oktomove! EQU 1 move /Y %%a I:\Test\divideandconquer\moved\
)
Yes, some things are not so easy to do in pure batch scripting.
However, I can do it, so I'll be glad to make this for you.
Update:
I've already made it, so it's waiting you. :-)
$30 USD dalam 1 hari
5,0 (2 ulasan)
1,6
1,6
2 freelancer menawar dengan rata-rata $30 USD untuk pekerjaan ini