Solved

Bat File write text file

Posted on 2013-01-21
4
721 Views
Last Modified: 2013-01-22
Hi All -
I am out of my element here ... never worked with .bat files.  I am looking for a quick and dirty way to read a directory and create a text file for each file in the directory... trying to avoid having to do this manually....(there's 2000).

Example:  I have three documents in my directory: pm1.doc, pm2.doc, pm3.doc.   I need the bat file to read thru each one and create a pm1.txt, pm2.txt, and pm2.txt with one line of text inside the text file - the file name (which is variable) and save it in another location on the server.

I'm running this script clientside on Windows XP, but it read and write from folders on the server.


Is there an easy way to do this?   Thanks for you help!!
0
Comment
Question by:mojeaux
  • 2
  • 2
4 Comments
 
LVL 82

Expert Comment

by:oBdA
Comment Utility
Try this; just save it as Whatever.cmd, and change the three variables at the beginning.
@echo off
setlocal
set Source=C:\Temp
set Target=D:\Temp
set Mask=*.doc
for %%a in ("%Source%\%Mask%") do (
	echo Processing %%~nxa ...
	>"%Target%\%%~na.txt" echo %%~nxa
)

Open in new window

0
 

Author Comment

by:mojeaux
Comment Utility
Thank you for the prompt response.  I have a couple questions about the syntax.  

I'm guessing 'set local' is setting it to run on my machine?  

I understand about the source and target variables.  Mask is the variable for the files its reading thru, correct?  

Then you set up a 'for' loop to read thru these files... So what does '%%a' represent?   It looks like these are wild cards?  

Also what does  '%%~nxa ... ' do?

The greater-than sign saves the output to the new text file. txt, correct?


Just would lik a clear understanding of how the loop is processing.   Thanks!
0
 
LVL 82

Accepted Solution

by:
oBdA earned 500 total points
Comment Utility
"setlocal" sets the scope of the variables defined in the script, so that they won't be set anymore once the script ends (enter "help setlocal" in a command prompt for details).
The "%%a" variable is the "for" loop variable that contains the current file name.
"%%~nxa" expands to the Name and eXtension of the file, so just "pm1.doc" instead of "C:\Temp\pm1.doc" (enter "help for" in a command prompt for details).
The ">" redirects the output of the "echo" command to the file given (%%~na, so only the file name, "pm1") and the extension ".txt".
0
 

Author Closing Comment

by:mojeaux
Comment Utility
Thank you for your time and explanation of the code.   It was extremely helpful.
0

Featured Post

Too many email signature changes to deal with?

Are you constantly being asked to update your organization's email signatures? Do they take up too much of your time? Wouldn't you love to be able to manage all signatures from one central location, easily design them and deploy them quickly to users. Well, you can!

Join & Write a Comment

This is an article about Leadership and accepting and adapting to new challenges. It focuses mostly on upgrading to Windows 10.
Today, still in the boom of Apple, PC's and products, nearly 50% of the computer users use Windows as graphical operating systems. If you are among those users who love windows, but are grappling to keep the system's hard drive optimized, then you s…
Windows 8 came with a dramatically different user interface known as Metro. Notably missing from that interface was a Start button and Start Menu. Microsoft responded to negative user feedback of the Metro interface, bringing back the Start button a…
With the advent of Windows 10, Microsoft is pushing a Get Windows 10 icon into the notification area (system tray) of qualifying computers. There are many reasons for wanting to remove this icon. This two-part Experts Exchange video Micro Tutorial s…

728 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

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now