setting variables for additional processing in batch script


I have a txt file with the following format:
ServerName\Dir1\file1.pdf newfile1_test.txt newfile1 n
ServerName\Dir2\file2.pdf bestfile2_test.txt bestfile2 b


I want to write a batch script that does the following:

1. Read each line from the text file for a round of processing
   1.1 Store each of the four strings of the line into 4 vars  - source , destfile, destfolder, destpparentfolder
    1.2  Check if destparentfolder exists on the C:/ of server2.If it doesn't, create it.
        1.3 Check if destfolder exists under C:/destparentfolder. If it doesn't, create it.
          1.4 Put the destfile in the C:/destparentfolder/destfolder.
Who is Participating?
Bill BachConnect With a Mentor PresidentCommented:
It is not clear it you want to write a batch script and you have a specific question, or if you want someone to write the entire batch script for you.  In any event, this script should do it:

FOR /F "tokens=* delims=" %%x in (input.txt) DO call :doit %%x

if not exist C:\%4 MD C:\%4
if not exist C:\%4\%3 MD C:\%4\%3
copy %1 C:\%4\%3\%2

It will read the INPUT.TXT file and call DOIT for each line of the source file, which then do each of the three steps you asked for.
LuckyLucksAuthor Commented:
In our example above, ServerName\Dir1\file1.pdf will be stored under C:/n/newfile1 as newfile1_test.txt
1. I think you might get a simpler solution using xcopy or robocopy, since they are capable of creating the destination paths they need.

2. I do not understand the control statements from your posted example and description.
Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

LuckyLucksAuthor Commented:
Bill, How do I get rid of the overwrite and the is the file a file or directory (when no overwrite)?
Bill BachPresidentCommented:
I figured that the batch file part was the hard part, and that you'd know how to use the COPY command.  The help screen for the COPY command comes in handy here:

 /Y           Suppresses prompting to confirm you want to overwrite an existing destination file.

The switch /Y may be preset in the COPYCMD environment variable. This may be overridden with /-Y on the command line.  Default is to prompt on overwrites unless COPY command is being executed from within a batch script.

So, add the "/Y" switch after "COPY" to avoid the prompt.  You can also use XCOPY, RoboCopy, or a host of other command-line copy tools.  See each tool's specific command line options for properly using it.
Bill PrewConnect With a Mentor Commented:
Ne real need for a subroutine here, so just to show a slightly more compact approach:

@echo off

set ControlFile=c:\temp\control.txt

for /f "usebackq tokens=1-4" %%A in ("%ControlFile%") do (
  if not exist c:\%%D\ md c:\%%D
  if not exist c:\%%D\%%C\ md c:\%%D\%%C
  copy /Y %%A c:\%%D\%%C\%%B

Open in new window

LuckyLucksAuthor Commented:
Thank you all.
LuckyLucksAuthor Commented:
With a /Y I still get - Does C:\a\abc\abcfile1.pdf specify a file name or directory name on the target <F=file, D=directory>?
Bill BachPresidentCommented:
Switch to XCOPY, and thay should go away.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.