• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 233
  • Last Modified:

How to execute shell script to several files in Windows Command Prompt?

I have a shell script to check blank files. Is it possible for the script to be executed to several files in a folder? Thank you.
0
skyberrie
Asked:
skyberrie
  • 4
  • 4
  • 3
2 Solutions
 
ozoCommented:
for f in several files ; do script $f ; done
0
 
TintinCommented:
Your title mentions Windows, but your topic is in Linux.

Which OS are you wanting to run this on?
0
 
skyberrieAuthor Commented:
Thanks ozo and Tintin. I'm running .sh in Windows CMD, and I'm a newbie to this. May I know what's the command to type in CMD for a written script to be executed in a folder consisting several files? Thanks!
0
Free learning courses: Active Directory Deep Dive

Get a firm grasp on your IT environment when you learn Active Directory best practices with Veeam! Watch all, or choose any amount, of this three-part webinar series to improve your skills. From the basics to virtualization and backup, we got you covered.

 
TintinCommented:
So you are running a Unix shell under Windows or just the standard Windows command prompt?
0
 
skyberrieAuthor Commented:
Yes, I'm running cmd.exe in Windows
0
 
TintinCommented:
In that case, in your batch file, you'll have something like:

for %%f in (.\*) do @echo %f
0
 
skyberrieAuthor Commented:
Thanks. The .sh script contains the following codes where the FileName has been defined earlier:

if [ -f $FileName ]; then      
echo "The file exists"
else
  echo "The file dosn't exist"
./Blank $year $month $mday $hour $min
fi

So, I wonder what's the command to type in CMD to be executed to a folder.
0
 
ozoCommented:
That .sh script looks like it was written in the same shell language that the answer in http:#a40550080 was written in, so that command could work.

But one issue may be that if you execute it on a folder (directory) it will say it does not exist, because
-f FILE means FILE exists and is a regular file
If you really want to check for existence, regardless of whether it exists as a regular file (-f), a directory (-d), a socket (-S), a symbolic link (-L),  a character special (-c), etc., then you should check -e $FileName
Another issue is that the script does not say which file exists, so when you run it on several files, you won't know what it is referring to when it reports "The file exists" or "The file dosn't exist"

for FileName in * ; do script.sh $FileName ; done
would run the script for all files the current folder,
or
for FileName in folder/* ; do script.sh $FileName ; done
would run it for all files in the specified folder,
but that seems useless because * should only match names that exist (although some of them may not be regular files)

Your reference to "blank" files could also suggest you might have preferred to check -s, which means that the file exists and has a size greater than 0
0
 
skyberrieAuthor Commented:
Thank you very much for your explanation. I'm running this command in the current directory (for FileName in * ; do script.sh $FileName ; done), but it returns "FileName was unexpected in this time".
0
 
ozoCommented:
I don't see anything in http:#a40550676 that returns "FileName was unexpected in this time".
Is there another part of the script you left out?
0
 
TintinCommented:
You can't run a Unix/Linux shell script under Windows unless you have a Unix shell installed.
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

  • 4
  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now