Improve company productivity with a Business Account.Sign Up

x
?
Solved

Explanation of variable with ~ syntax

Posted on 2011-02-25
6
Medium Priority
?
393 Views
Last Modified: 2013-11-05
Hi
I got this batch script on the web for listing files with their sizes and there is one part I do not fully understand, so I was hoping someone could explain it to me
 @echo off
c:
cd\
set /A Total=0, Cnt=0
for /F "tokens=*" %%A in ('dir %1 /S /B /A-D') do call :show "%%A"
goto :EOF
:show
set "Size= %~z1"
echo %~f1 %~t1 %Size:~-10% >> c:\test\files.txt
goto :eof
PAUSE

The part I don't understand is in the 3rd last line of the script:
%Size:~-10%

Is the whole variable everything between the two % characters?
I understand that the %Size is the Size variable which is set to the file size in the previous line, but I don't understand what the :~10% bit is doing - so please advise

Thanks

0
Comment
Question by:Barry Cunney
6 Comments
 
LVL 11

Expert Comment

by:Patmac951
ID: 34984317
I think this link will give  you the answer  you are looking for:

http://stackoverflow.com/questions/112055/what-does-d0-mean-in-a-windows-batch-file
0
 
LVL 11

Expert Comment

by:Patmac951
ID: 34984328
This link is probably a little easier to understand, straight from Microsoft.

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true
0
 
LVL 36

Assisted Solution

by:it_saige
it_saige earned 400 total points
ID: 34984458
%~ is an expanding charactor.

%~n expands or add's too something, i.e.

%~1 - Expands %1 removing any surrounding quotes
%~f1 - Expands %1 to a fully qualified path name

In the above, your script uses

%~z1 which Expands %1 to the size of the file.
%~f1 which Expands %1 to a fully qualified path name.
%~t1 which Expands %1 to the date/time of the file.
%Size:~-10% adds 10 charactors to the front of the Size variable.  Like an align right if you will.

http://www.dostips.com/DtTipsStringManipulation.php

HTH,

-saige-
0
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

 
LVL 17

Author Comment

by:Barry Cunney
ID: 34984557
I was looking at these links earlier but I could not see any explicit explanation for the :~-10%
 syntax or even for ~- - maybe you can point it out to me in case I am missing something?
0
 
LVL 17

Author Comment

by:Barry Cunney
ID: 34984570
Thanks it_saige - my previous cpmment was for patmacs links not yours - I am looking in to more details what you posetdd now but it looks good
0
 
LVL 72

Accepted Solution

by:
Qlemo earned 600 total points
ID: 34984712
Correction to it_saige's post:

   %Size:~-10% adds 10 charactors to the front of the Size variable.  Like an align right if you will.

That is not correct. %Size:~-10% just starts ten positions from the right of %Size%.
%A:~pos,len%    results in the substring starting at (null-based) position pos, having length len. Negative positions will count from the right instead of the left.
set A=1234567890
echo %A:~1,1%    echoes  2
echo %A:~-2%     echoes   90

To get a explanation, you don't need a link, just call
  set /?
   for /?

in a DOS prompt and you will see all "substitution" variants.
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

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.

Join & Write a Comment

Over the years I've spent many an hour playing on hardened, DMZ'd servers, with only a sub-set of the usual GNU toy's to keep me company; frequently I've needed to save and send log or data extracts from these server back to my PC, or to others, and…
Introduction: Recently, I got a requirement to zip all files individually with batch file script in Windows OS. I don't know much about scripting, but I searched Google and found a lot of examples and websites to complete my task. Finally, I was ab…
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…

606 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