?
Solved

Batch file that will move PDFs to corresponding folders

Posted on 2014-11-28
8
Medium Priority
?
282 Views
Last Modified: 2014-12-01
Hello,

Our financial institution is using a system that generates client PDFs in a specific format. For example, the system we use exports PDFs in location \\serverA\clientPDFs\ as this format:

1455-Douglas T Thompson-2013Archivek1Package.pdf
4785-Cheri Lockson-2013Archivek1Package.pdf
7899-Thomas Pete-2012Archivek1Package.pdf
etc... (we have hundreds of them waiting to be moved)

but all clients of different types are in 1 folder instead of its own assigned client folder.

I need a batch file that will migrate the clients above to its corresponding client ID. An example of its final result would be:

\\serverB\client\1455\1455-Douglas T Thompson-2013Archivek1Package.pdf\
\\serverB\client\4785\4785-Cheri Lockson-2013Archivek1Package.pdf\
\\serverB\client\7899\7899-Thomas Pete-2012Archivek1Package.pdf\


anything will help, thanks in advance!
0
Comment
Question by:vlsllp
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
8 Comments
 
LVL 20

Expert Comment

by:dsacker
ID: 40470687
Put this in a .bat file, and test it:
@echo off

for /f %%a in ('dir /b \\serverA\clientPDFs\*.PDF') do (
    call:MoveThisFile %%a
)
goto:EOF

:MoveThisFile

    set file=%1
    set node=%file:~0,4%

    rem Comment out the following two lines when you're ready to run this for real

    echo if not exist \\serverB\client\%node% mkdir \\serverB\client\%node%
    echo move \\serverA\clientPDFs\%file% \\serverB\client\%node%\.

    rem Remove the "rem" comments from these next two lines when you're ready to run this for real

    rem    if not exist \\serverB\client\%node% mkdir \\serverB\client\%node%
    rem    move \\serverA\clientPDFs\%file% \\serverB\client\%node%\.

    goto:EOF

Open in new window

0
 
LVL 25

Expert Comment

by:NVIT
ID: 40470688
Try this:

@echo off
for %%a in (*.pdf) do (call :DoIT %%a)
goto :EOF

:DoIt
echo.
set IDA=%1
set ID=%IDA:~0,4%
md %ID%	
move "%1" %ID%
)

Open in new window

0
 

Author Comment

by:vlsllp
ID: 40470815
We appreciate the quick reply!

i tried inputting your code into a .bat file,

Prior testing this on my server I created 2 folders on my desktop: "%USERPROFILES\Desktop\serverA\" and "%USERPROFILES\Desktop\serverB\

 here's what I have so far, but didn't seem to work. thanks again

@echo off

for /f %%a in ('dir /b %USERPROFILE%\Desktop\serverA\*.PDF') do (
    call:MoveThisFile %%a
)
goto:EOF

:MoveThisFile

    set file=%1
    set node=%file:~0,4%

    rem Comment out the following two lines when you're ready to run this for real

    echo if not exist %USERPROFILE%\Desktop\serverB\%node% mkdir %USERPROFILE%\Desktop\serverB\%node%
    echo move %USERPROFILE%\Desktop\serverA\%file% %USERPROFILE%\Desktop\serverB\%node%\.

    rem Remove the "rem" comments from these next two lines when you're ready to run this for real

    if not exist %USERPROFILE%\Desktop\serverB\%node% mkdir %USERPROFILE%\Desktop\serverB\%node%
    move %USERPROFILE%\Desktop\serverA\%file% %USERPROFILE%\Desktop\serverB\%node%\.

    goto:EOF
0
Get proactive database performance tuning online

At Percona’s web store you can order full Percona Database Performance Audit in minutes. Find out the health of your database, and how to improve it. Pay online with a credit card. Improve your database performance now!

 
LVL 20

Expert Comment

by:dsacker
ID: 40470845
What kind of error message(s) did you get?
0
 
LVL 24

Assisted Solution

by:Eirman
Eirman earned 400 total points
ID: 40470846
This little utility will do what you want (and other stuff as well) without coding ...
http://www.robobasket.com/create-folder-using-part-of-filename.html
0
 
LVL 25

Expert Comment

by:NVIT
ID: 40470866
Maybe you need to wrap these in quotes?
%USERPROFILE%\Desktop\serverB\%node%
%USERPROFILE%\Desktop\serverA\%file%

Open in new window

i.e.
"%USERPROFILE%\Desktop\serverB\%node%"
"%USERPROFILE%\Desktop\serverA\%file%"

Open in new window


Also, does that ending "." need to be removed?
move \\serverA\clientPDFs\%file% \\serverB\client\%node%\.

Open in new window

0
 
LVL 20

Accepted Solution

by:
dsacker earned 1600 total points
ID: 40470880
I have amended the code a little, as follows, where you can set your source an target directories up front:
@echo off

    setlocal

    set source=\\serverA\clientPDFs
    set target=\\serverB\client
    set files=*.PDF

    for /f "delims=^|" %%a in ('dir /b "%source%\%files%"') do (
        call:MoveThisFile %%a
        if errorlevel 1 goto:EOF
    )

    goto:EOF

:MoveThisFile

    set file=%*
    set node=%file:~0,4%

    if not exist "%target%\%node%" mkdir "%target%\%node%"
    if errorlevel 1 goto:EOF

    move "%source%\%file%" "%target%\%node%\."
    goto:EOF

Open in new window

I changed the code recently (a few hours after posting this, to wrap double-quotes around the source and target, just in case you had spaces in the file or directory names. I also added some error checking. Tested it with some test files I created, and it seems to work okay.
0
 
LVL 20

Expert Comment

by:dsacker
ID: 40471098
FYI, vlsllp, I changed the code a little (above), adding double-quotes in case of any spaces and adding error checking. I tested it with files I created,and it seems to work okay.
0

Featured Post

Get MongoDB database support online, now!

At Percona’s web store you can order your MongoDB database support needs in minutes. No hassles, no fuss, just pick and click. Pay online with a credit card. Handle your MongoDB database support now!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
The SignAloud Glove is capable of translating American Sign Language signs into text and audio.
An introduction to basic programming syntax in Java by creating a simple program. Viewers can follow the tutorial as they create their first class in Java. Definitions and explanations about each element are given to help prepare viewers for future …
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …
Suggested Courses

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question