Scripting Languages

26K

Solutions

72

Articles & Videos

20K

Contributors

A scripting language is a programming language that supports scripts, programs written for a special run-time environment that automate the execution of tasks that could alternatively be executed one-by-one by a human operator. Scripting languages are often interpreted (rather than compiled). Primitives are usually the elementary tasks or API calls, and the language allows them to be combined into more complex programs. Environments that can be automated through scripting include software applications, web pages within a web browser, the shells of operating systems (OS), embedded systems, as well as numerous games. A scripting language can be viewed as a domain-specific language for a particular environment; in the case of scripting an application, this is also known as an extension language.

Share tech news, updates, or what's on your mind.

Sign up to Post

GetTickCount64
The Windows functions GetTickCount and timeGetTime retrieve the number of milliseconds since the system was started. However, the value is stored in a DWORD, which means that it wraps around to zero every 49.7 days. This article shows how to solve that problem by using the GetTickCount64 function.
1
Free Tool: ZipGrep
LVL 8
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.

A quick Powershell script I wrote to find old program installations and check versions of a specific file across the network.
1
 
LVL 8

Expert Comment

by:Senior IT System Engineer
Comment Utility
Does the user will notice any performance issue when the scanning is running ?
0
 
LVL 9

Author Comment

by:Frank McCourry
Comment Utility
Performance degradation is relative only to the number of paths and at what level you enter that path.  It is the equivalent of performing a non-indexed search on the users computer.  If you keep the search path narrow, the user will probably not even notice.  If you start at the root, I guarantee that your phone will ring.  

This script was designed to find a specific file in specific locations, thereby limiting the amount of hard drive activity it causes on the end users computer.  I run this once a month or so and have had no complaints.
0
EE Question ID
In threads here at EE, each comment has a unique Identifier (ID). It is easy to get the full path for an ID via the right-click context menu. However, we often want to post a short link within a thread rather than the full link. This article shows a technique for doing this with a single keystroke.
3
 
LVL 10

Expert Comment

by:Andrew Leniart
Comment Utility
Thank you for the clarification Joe.
I'm glad that you were able to understand my examples.
It's actually quite an accomplishment on you part! I guess you could say I'm "programmatically challenged". Whenever I try to understand sample code, all those commands and squiggly } lines start to make the whole page go blurry on me lol..  Your comments beside the commands make it very easy to follow indeed.  Will definitely be checking out your other AutoHotkey articles so thanks for the links.

Best..
0
 
LVL 54

Author Comment

by:Joe Winograd, EE MVE 2015&2016
Comment Utility
Andrew,
Thanks again for the comments. It's extremely helpful for authors to get feedback like that from readers. Regards, Joe
0
Active Directory replication delay is the cause to many problems.  Here is a super easy script to force Active Directory replication to all sites with by using an elevated PowerShell command prompt, and a tool to verify your changes.
2
This article will show, step by step, how to integrate R code into a R Sweave document
3
RStudio-Ball
This article is meant to give a basic understanding of how to use R Sweave as a way to merge LaTeX and R code seamlessly into one presentable document.
3
Introduction
This question got me thinking...

Why shouldn't we use Globals?
This is a simple question without a simple answer.  How do you explain these concepts to a programmer who is coming from a background in procedural programming? 

There is a lot of deep background thinking that you need to understand in order to know why globals are considered to be a poor design choice today.  Singletons are just as bad as globals in many ways.  Often procedural programmers have looked at the global keyword as an expedient solution - a global declaration made inside your functions provided a simple reference to an external database connection.  Tightly-coupled code sets were the norm in programming just a few years ago, and the global keyword implemented tight coupling in a way that irrevocably bound certain objects into the fabric of the application.   If you're working alone on a standalone project, you can sometimes get away with using global objects, but if you want to come into the modern world of application design, and especially if you want to collaborate on anything important, you need to understand why global elements are considered harmful, and what the alternatives offer.

Global Variables Break Encapsulation
2
 
LVL 110

Author Comment

by:Ray Paseur
Comment Utility
I may have to sign off on this because I'm not following the part about passing an object three levels deep.  It looks like the $db variable is injected into the constructor of the Contact class and used in its methods.  That seems fine to me.  The granularity level for testing is the Contact class, since the $db is the same throughout all the methods.

A "config" class sounds like a singleton to me - similar to a global, but I would have to read the code that sets it up and uses it.  Maybe a consulting agreement would make sense here?
0
 
LVL 32

Expert Comment

by:DrDamnit
Comment Utility
No, I'm satisfied with getConfig(). I was just trying to understand if there was a better way. But your feedback is appreciated.
0
There is a huge demand for CodeIgniter among the PHP web developers due to its dynamic features and benefits these days. It is one of most popular and agile open source PHP framework for creating robust web applications in PHP web development field. 

​Any web applications developed based on CodeIgniter framework perform effectively and rapidly. It helps the programmers to build dynamic and custom web applications with an advanced technology platform by offering valuable set of aspects to write code from scratch.

Let us look out some of benefits and features of CodeIgniter.



codeigniter-features.png

Key features

Model-View-Controller Based System

CodeIgniter make use of the MVC system to find complex models and helps you to create application easily by using controllers and views. It assists the developer to build core libraries for the system and enables you to integrate your own existing scripts with database.

Error Handling

It offers simple user-friendly interfaces that help you to detect error functions throughout the application globally. In this way of approach, it provides instructions to error logging class that allows debugging messages to be saved as text files. It displays all PHP errors in your web application without missing inadequacy.

Form Validation

This feature helps you to write the code in a single line by using effective validation framework system. It generates codes without any errors and ensures …
0
RStudio-Ball
If you haven’t already, I encourage you to read the first article in my series to gain a basic foundation of R and R Studio.  You will also find the links for downloading the programs there as well.
 
To begin, I want to mention a bit about the “packages” found in R.  The incredible thing about R is that is a dynamically evolving language that gains functionality on a daily basis.  Packages allow for anyone to compile functions and data sets together in one convenient bundle to extend to the base system functionality of R.  There are two main repositories that host packages, CRAN and bioconductor.  At the time of writing this article there are more than 9,000 individual packages available for use with R.
 
A majority of the packages will be installed from CRAN, so I will highlight the steps to install and load packages hosted there.  The first thing you will need to do is to install the package, as an example we will install the ggplot2 (one of R’s most popular graphing packages).   Once you have the package installed, you must then load it.  The code is as follows:
 
install.packages("ggplot2")
library("ggplot2")

Open in new window


Alternatively, utilizing R Studio, you can click the Packages tab in the bottom right window, click install, and enter ggplot2 in the Packages field (seen below):

Screen-Shot-2015-07-21-at-12.05.38-PM.pnScreen-Shot-2015-07-21-at-12.11.37-PM.pnWe will be using multiple different packages in this series but I will notify you which ones you need before I expect you to use them, just always remember to load the packages after you install it!
 

Concept 1: Objects
3
 
LVL 66

Expert Comment

by:Jim Horn
Comment Utility
Looks thorough, will have to explore this.  Voted Yes.
0
 
LVL 50

Expert Comment

by:Vitor Montalvão
Comment Utility
Nice article, Matthew.
I'm also a R enthusiastic and a self learner.
Just want to call your attention for the link to the next article. You didn't want to add it here in this article or it was on purpose?
0
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 able to create the below script to complete my task. I have modified the original script as per my requirement & give credit to the creator of this script ( Anonymous ).

For Original script click here...
 
Below is the modified script:
@echo off

Title autozip.bat

REM updated 30/07/2015
REM created by: Anonymous
REM modified by: Yashwant Vishwakarma

REM This script compresses files in a folder Note: files with the same name 
REM but with different extensions will be in the same archive.

path=%path%;"c:\program files\winrar"

REM ****************** Folder to compress******************
set dir=C:\testzip
REM *******************************************************

REM change to directory
cd %dir%

echo Folder to compress in *.RAR format:
echo %dir%

echo Compressing files started....

REM Compress files in directory individually without subdirectories

echo.
FOR %%i IN (*.*) do (
rar a "%%~ni" "%%i"
)
goto eof

Open in new window

For more commands and syntax follow winrar command line help online

In the original batch file script, there were 7 options which required manual intervention to choose and perform tasks. However, I want to completely automate this task so I modified it and its working absolutely fine for me.

Coding Explanation:
Table.pngReferences: 

Conclusion:
This is what I did with a given script, so I wanted to share my learning and experience with you. I hope it will help someone also when this type of requirement will come.

Keep smiling, rising, shining & stay blessed.
                                                                 forefinger-down-512.png****Kindly vote this if you liked this article by clicking on the 'Vote' button & leave your precious comment !!! *****
 
7
 
LVL 7

Author Comment

by:Yashwant Vishwakarma
Comment Utility
Thank You bfuchs :)
Have a great day ahead :)
Keep smiling n shining always :)
Stay blessed :)
0
Free Tool: SSL Checker
LVL 8
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

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.

RStudio-Ball
Having just graduated from college and entered the workforce, I don’t find myself always using the tools and programs I grew accustomed to over the past four years. However, there is one program I continually find myself reverting back to…R.
 
So what is R? R is a programming language and environment with an ever-growing bucket of tools for statistical processing and graphic creation. According to the R-project website, R includes
  • an effective data handling and storage facility,
  • a suite of operators for calculations on arrays, in particular matrices,
  • a large, coherent, integrated collection of intermediate tools for data analysis,
  • graphical facilities for data analysis and display either on-screen or on hardcopy, and
  • a well-developed, simple and effective programming language which includes conditionals, loops, user-defined recursive functions and input and output facilities.
 
Sure, graduating with a minor in Statistics and my love for data manipulation may make me partially biased with using R but I feel like its uses are incredibly wide-reaching. The great thing about R is it allows the user to perform simple arithmetic calculations with matrices or dive in deeper and create complex graphs or even create dynamic reports to incorporate LaTeX.
 
Another incredible feature is you have an overwhelming amount of “packages” at your disposal to increase …
12
 
LVL 66

Expert Comment

by:Jim Horn
Comment Utility
Hi Matthew

Very well written introduction article, voting Yes.

I'm currently in Seattle attending PASS Summit 2015, and in the keynote they're doing a big demo of SQL Server 2016 features, which include built-in R language and real-time data analytics on data flowing from OLTP systems.  So if anything there may be opportunity for you to write a sequel (no pun intended) article on R programming in SQL Server 2016.

Thanks.
Jim
0
 
LVL 51

Expert Comment

by:Mark Wills
Comment Utility
Will second that request...

Microsoft bought Revolution Analytics : http://blogs.technet.com/b/machinelearning/archive/2015/04/06/microsoft-closes-acquisition-of-revolution-analytics.aspx specifically for incorporating analytics on big data. But also means that having incorporated R and the RODBC drivers as well.

Here is an interesting look at how SQL and R can co-exist quite happily via  RODBC (an article written about the same time as acquisition was finalised) : https://www.simple-talk.com/sql/reporting-services/making-data-analytics-simpler-sql-server-and-r/

So, maybe something along those lines ? I am sure Jim or Me (plus others) can assist.
0
Introduction
Here is an interesting hierarchy of learning.  Let's identify four groups.
  • Neophyte
  • Inquirer
  • Competent
  • Expert
Consider, if you will, the different nature of learning in each of these groups. We could take almost any subject, but let's use German language, and compare it to software development. Natural languages are close enough to programming languages for the analogy to stand.

Neophyte
When you enter German 101, you start with the most basic rules of grammar and pronunciation. You learn that plurals end in "en." Your learning is nearly 100% rules-guided, and built up with rote practice. You memorize the alphabet. You need to be told what to do and say. 

In software development, when you're a novice, you're just learning the rules of syntax and the basic structure of program flow. An introductory tutorial is helpful. You may not understand the expressive power of the language yet. You begin reading the language reference.

Questions at this level need straightforward, prescriptive answers.

Inquirer
By the time you're far enough along to be called an Inquirer, you're able to read and understand common German phrases and you're picking up a few idioms. You can ask simple questions in German. Your learning is still …
10
 
LVL 1

Expert Comment

by:Christopher Rourke
Comment Utility
Excellent article Ray.
0
WordPress.com goes down
First things first, I say this in many of my articles, but in this one you can take it as fact. I am not in any way an expert when it comes to WordPress. I am strictly a user. I don't know the programming languages involved, and although I could probably glean what is going on from the code, I have never done so.

For many years I did work as a website developer. I did a lot of coding (pre-CSS) in HTML (that is kind of like saying you write programs in DOS -- it means next to nothing, except possibly that you have just dated yourself). Because of this I do have a little bit of a handle on how things work, but obviously not enough. I will admit up front that I did what I tell everyone I work with not to do, under any circumstances, change things directly in your production environment - but I will get back to that.

For a couple of months my blog was down. I take complete responsibility. I was adding plugins, everything was working fine until I logged out and couldn't log back in. I think it had something to do with the functions.php file I edited (I never should have done that, but I am a great Monday morning quarterback ...). During a plugin install, it was suggested that I add a line to this file. Everything seemed to be working fine after the edits so I logged out (I have a feeling that I edited the wrong functions.php file, there are so many ...).

I am a computer analyst as my day job and specialize in computer security
2
With the withdrawal of support for Windows Server 2003 this summer, many clients face the issue of moving away from their 2003 installs. There are a few options out there that many people/companies are selling. But the clients I have, haven't wanted to spend a lot or tip their toes into newer tech (such as Azure). So based on those projects here is my step by step guide to take a Windows Server 2003 File Share server, backup the data using Robocopy, rebuild the same physical server with Windows Server 2008 R2 and again using Robocopy, more the data and more importantly the file permissions back.
 

What you will need


  1. Somewhere to store the files that need to be migrated. The last few times I have run a project like this I used a 6TB External WD Drive
  2. Licenses. The client needs to have the correct Windows Server licenses in place
  3. Hardware that the client is happy to run the 2008 R2 servers on. The last few times I did this, the hardware was new enough that I was able to re-use the same hardware
  4. Robocopy - The beauty of Robocopy is that you can copy the existing file shares from the server and preserve the file permissions. You can run it multiple times and each time Robocopy will copy the files it missed the last time (great if running the task in hours)
 

Recommendations

I would highly recommend planning, even the smallest of migrations. You need to consider:

  1. Hardware
  2. Software
  3. Licenses
  4. RAID Configurations
  5. How the logical drives should be made up
 

Short task list:


  1. Plan
  2. Plan
  3. PLAN
5

What is Node.js?

Node.js is a server side scripting language much like PHP or ASP but is used to implement the complete package of HTTP webserver and application framework. The difference is that Node.js’s execution engine is asynchronous and event driven, which throws a whole new light on the way a server side app performs. As Node.js is the complete package (web HTTP server and server side language), there is dramatically less overhead in implementing it as a webserver when compared with a typical Apache (and PHP) or IIS (with ASP/PHP) installation.

Node.js is written in JavaScript, the most common client-side language around. This reduces the learning curve somewhat for most web developers as they understand JavaScript and how to code it.
 

Why is it Important and what are the Benefits?

Most of the server side languages I’ve used are built on sequential execution models, meaning one task has to finish before another one begins. For instance, PHP (in conjunction with the type of server it is running off e.g. Apache) will spawn a thread for each request made to the server. If that thread needs to get data from a database that takes a while or another request comes in, that thread is locked up and consuming resources. For a data intensive app with many concurrent connections, that could severly impede the server’s performance.

Node.js is single threaded (yes only one thread!) and is beneficial in applications where frequent blocking I/O requests
9
Introduction
This article is about a PHP programming practice that can help reduce errors and improve the readability of your PHP programs.  It’s nothing revolutionary — just a new way of looking at one of the problems that has been a part of PHP since the beginning.  Before we jump into the code, let’s start with a little background and context.

Why We Use Programming Languages
Programming languages exist for one purpose and one purpose only: to help you write good programs.  Good programs are those that are bug-free, functional, easy to use, easy to read and understand, and that meet the client’s requirements, preferably in a way that delights the client.  Not-so-good programs are those that fail to measure up in some way, and they are the vast majority of all programs ever written.  Obviously every programming language is a human creation and so each language has its good parts and its bad parts, according to choices made by the language developers at the time they designed the software.  In the case of modern programming languages, the time of design may have been quite a long time ago.  Some of the assumptions of that day may no longer apply today.  And it follows that some of the original design assumptions no longer help us write good programs.  They can even hinder our efforts.

Design Choices
Before we go into our design for a PHP programming practice let’s look at one of those long-ago design choices that made sense at the time, and …
5
 

Expert Comment

by:calslim
Comment Utility
Great article!

I have long used/advocated this design pattern. But I also picked up a few tips:

  • use of magic __get()
  • PHP_EOL trick
  • $object_vars = get_object_vars($this) for acceptable params


As you wrote, there are a number of next steps; such as sanitizing $_GET. I think a good addition to this write-up would be to introduce dependency injection. Move reference to $_GET out of the constructor and make it a parameter of the constructor instead, thus decoupling the code and making it more reusable and testable:

Class RequestArguments
{
    // THE CANONICAL LIST OF ACCEPTABLE REQUEST PARAMETERS
    public $user, $id, $group, $year, $month, $size, $color;

    public function __construct($getInstance)
    {
        $object_vars = get_object_vars($this);
        foreach ($getInstance as $property => $value)
        {
            if (array_key_exists($property, $object_vars)) $this->$property = $value;
        }
        return $this;
    }
}

$getInstance = $_GET; // maybe you want to sanitize at this point or whatever else

$requestInstance = new RequestArguments($getInstance)

Open in new window


Looking forward to reading more from you!
1
 
LVL 110

Author Comment

by:Ray Paseur
Comment Utility
@calslim: thanks for your notes.  Dependency injection seems to be something that takes a bit more than a single article to explain.  Here are the two where I have unwrapped the topic.  Sadly, E-E seems uniquely unable to provide a search function that can lead its users to the Articles on the web site.

https://www.experts-exchange.com/articles/18210/Software-Design-Dependencies.html

https://www.experts-exchange.com/articles/19999/PHP-Design-Avoiding-Globals-with-Dependency-Injection.html

I am optimistic that one day E-E will be able to help users find articles when they ask topically related questions, but we have been waiting for this "super power" since 2007 with no response from the corporate office.  Maybe there will be progress one day.
1
How to remove superseded packages in windows w60 or w61 installation media (.wim) or online system to prevent unnecessary space.

w60 means Windows Vista or Windows Server 2008.
w61 means Windows 7 or Windows Server 2008 R2.

There are various guides found on the internet on how-to integrate updates into Windows installation media using dism.
This article is a post-integrate how-to to this numerous articles.
This article is addressed to users, who are comfortable using dism to mount, update, manage and unmount Windows Image files for deployment of Windows Systems.
So mounting and dismounting images is intentionally left out.

Problem:
Administrators often include windows update packages into their deployment images to save time when deploying.
In Windows 8 dism.exe has built-in command-line extensions to remove superseded updates from Windows 8 image files.
Earlier versions of Windows do not have this feature.
So when you integrate packages into a windows installation media (w60 or w61), superseded or outdated packages reside in the deployment image and use unneccessary space. This guide shows how to list and remove superseded packages from the command-line or by batch.

Short description for what you have to do before:
- Download Windows Updates for Windows (w60 or w61).
  Best practice is using wsus offline update.
- Mount Windows installation media.
- Apply packages to the mounted image.

The listings below offers two options.
The first option …
1
AutoHotkey logo
AutoHotkey is an excellent, free, open source programming/scripting language for Windows. It started out as a keyboard/mouse macros product, but has expanded into a robust language. This article provides an introduction to it, with links to additional resources for EE members who want to learn more.
19
 
LVL 10

Expert Comment

by:Andrew Leniart
Comment Utility
Great article Joe. Very helpful.
Sidebar: If you're wondering how I captured the UAC dialog box, see my EE article, How to disable the secure desktop when User Account Control (UAC) prompts for elevation.
I cheat and do it by capturing the entire action in an Oracle Virtual Machine installation from the Host side. The other benefit to that method is that I need not concern myself about ever accidentally showing sensitive files and/or folders when zooming around in Internet explorer while creating video tutorials :-)

Cheers..
0
 
LVL 54

Author Comment

by:Joe Winograd, EE MVE 2015&2016
Comment Utility
Hi Andrew,
Thanks for the compliment — I appreciate it! Your idea sounds like a good one for folks who run virtual machines — thanks for the feedback. Regards, Joe
0
In Q3 of last year, Experts Exchange introduced a new Messaging System, allowing any member to communicate directly with other members.

During an especially long thread with a member, I wanted to go back to previous messages in the exchange to refresh my memory on an issue. However, the Message System doesn't have a Search function that allows you to search the contents of all messages in a thread. But then it occurred to me that I could take advantage of the search feature in my browser, Firefox (Edit>Find or Ctrl-F). However, to do that, all of the messages would have to be expanded by clicking the plus sign next to each one:
Plus-sign---Expand.jpgThat's very painful in a long thread! So I submitted an enhancement request entitled Need the ability to expand/collapse all messages in a thread  in the Messaging System testing project. An EE Administrator, eenookami, replied to my request with a fantastic work-around — JavaScript code to expand all messages in a thread, as well as JavaScript code to collapse all of them.

In the spirit of giving credit where credit is due, all of the credit goes to eenookami for this solution. My only minor contributions are taking the time to write the article in order to share the solution with other members of the EE community and adding an explanation of how to place the Expand All and Collapse All items on the Firefox Bookmarks Toolbar
6
 
LVL 2

Expert Comment

by:Rob Jurd (eenookami)
Comment Utility
Great Article Joe and thanks for giving me kudos however no one would know about it without taking it a step further with this article contribution.

For those interested, it is called a bookmarklet and it will work it all browsers.  For those adventurous ones, you can write your own bookmarklets to do anything on the site you would otherwise do with a click or a keypress on your keyboard.  I'll leave the examples for your imagination...

The bug report that started this is: http://support.experts-exchange.com/customer/portal/articles/1162518

Cheers,

eenookami
0
 
LVL 54

Author Comment

by:Joe Winograd, EE MVE 2015&2016
Comment Utility
Hi eenookami,

Thanks for the compliment and the Helpful Vote — I appreciate both! Additional thanks for the further explanation of bookmarklet — very interesting!

Btw, the link you posted for the bug report that started this does not seem to be right, but it gave me the idea to include that link in the article, which I will do in a moment. Regards, Joe
0
MIM Survival Guide for Service Desk Managers
MIM Survival Guide for Service Desk Managers

Major incidents can send mastered service desk processes into disorder. Systems and tools produce the data needed to resolve these incidents, but your challenge is getting that information to the right people fast. Check out the Survival Guide and begin bringing order to chaos.

This article was inspired by a question here at Experts Exchange. The requirements stated in that question are (1) reduce the file size of a large number of JPG files in an extremely large number of subfolders; (2) perform that function without user intervention; (3) store the compressed files back into themselves, that is, after compression, each file overwrites itself.

The solution presented in this article meets those requirements. It is based on the excellent software package, GraphicsMagick (a fork of ImageMagick). GraphicsMagick is free (in every sense of the word), distributed under the MIT License.

The first step in the solution is to download and install GraphicsMagick from SourceForge (the latest release as of this article's publication is 1.3.21). The download folder looks like this:

GM-binaries.jpgSo the choices are:

GraphicsMagick-1.3.21-Q8-win32-dll.exe
GraphicsMagick-1.3.21-Q16-win32-dll.exe
GraphicsMagick-1.3.21-Q8-win64-dll.exe
GraphicsMagick-1.3.21-Q16-win64-dll.exe


As you can see in the file names above, there are two issues to consider with respect to the correct edition for you. The first is the so-called Quantum Depth. There are two possibilities — Quantum Depth of 8 (Q8) and Quantum Depth of 16 (Q16
4
 
LVL 24

Expert Comment

by:NVIT
Comment Utility
Thanks for this article, Joe! I haven't taken a look yet but... Do you know if there is a switch to preserve the file date and time of modified files?
0
 
LVL 54

Author Comment

by:Joe Winograd, EE MVE 2015&2016
Comment Utility
You're welcome, NVIT — glad you found it helpful. I'm pretty sure the off-the-shelf product can't do it, but there's a third-party patch that claims to provide a preserve-timestamp option for the mogrify command:
https://sourceforge.net/p/graphicsmagick/patches/45/

I haven't tried this and am curious about it, so if you give it a spin, please post your results.
Thanks, Joe
0
Power PDF is the newest product from the Document Imaging division of Nuance Communications. It is available in two editions — Power PDF Standard and Power PDF Advanced. Nuance offers a free 30-day trial of the Advanced edition, available for download here:
http://www.nuance.com/for-business/imaging-solutions/document-conversion/power-pdf-converter/free-trial/index.htm

For whatever reason, Nuance does not offer a free trial of the Standard edition. Everything in this article about Version 1.0 is based on my experience with the free trial of the Advanced edition running in W7 Pro 64-bit; everything about Version 1.1 is based on the licensed Power PDF Advanced, also on W7 Pro 64-bit.

Disclaimer before going further: I have no affiliation with Nuance and no financial interest in it whatsoever. I am simply a happy user/customer of several of its document imaging products, including OmniPage, PaperPort, and PDF Converter (the latter is being replaced by Power PDF).

Update on 22-Feb-2015: The initial submission of this article was about version 1.0 of Power PDF Advanced. Nuance recently released version 1.1, but since EE members may still have 1.0, I decided not to delete the information about 1.0, but instead added a section at the bottom of the article about 1.1.

Update on 18-Jun-2015
5
 
LVL 54

Author Comment

by:Joe Winograd, EE MVE 2015&2016
Comment Utility
Hi Amine,
I just upgraded to Power PDF Advanced Version 2.1 and am happy to confirm your comment! Version 2.1 does, indeed, allow conversion to text files by using the -TTXT command line option. Thank you very much for making me aware of this — I really appreciate it! Feedback like yours from members helps to improve articles, making them far more valuable to the EE community. My last update to this article was about Version 1.1, but there have been three upgrades since then — 1.2, 2.0, and 2.1. I plan to update this article with additional information about these newer versions after I've had more experience with the latest V2.1. Thanks again, Amine, for the excellent feedback. Regards, Joe
0
 

Expert Comment

by:Willem van der Plas
Comment Utility
Dear mr. Winograd, hello Joe,
I have been seeking desperately for a way to batch compress thousands of PDF files in my library, which has many folders and subfolders and sub-subfolders, until now in vain. So your article is great news for me.
My question: is the batchconverter.com "trick" also for the PowerPDF standard version, or for the advanced version alone?
Thanks for helping me out, so I can decide which version I buy!
Regards
Willem
0
Update 21-May-2015: I temporarily removed the source code to make major changes to the program. Regards, Joe

INTRODUCTION

This article presents a solution to a question asked here at Experts Exchange. The situation is that there's a large number of subfolders (400 in the original question), each of which has a number of PDF files (two in the original question). The goal is to combine/merge the PDF files in each subfolder (in ascending date order) into a single PDF file, storing the combined file in each subfolder. The source PDF files in each subfolder may have any file names and the user should be able to specify the file name of the combined file.

REQUIRED SOFTWARE

The method presented in this article requires AutoHotkey, an excellent (free!) programming/scripting language. The quick explanation for installing AutoHotkey is to visit its website. A more comprehensive explanation is to read my EE article, AutoHotkey - Getting Started. After installation, AutoHotkey will own the AHK file type, supporting the solution discussed in the remainder of this article.

The program utilizes another excellent (free!) piece of software — PDF Toolkit (PDFtk). It comes in both command line and GUI versions. The command line version is called PDFtk Server
7
 

Expert Comment

by:Pinakin Mistry
Comment Utility
Dear sir,
Kind Attn. Mr. Joe Winograd
Requesting you to kindly re-attach the removed source code as I am desperately looking for this particular solution for merging several pdf files in to single pdf from multiple subfolders. This is what I need pl. re-upload. If the software is updated with some added features requesting you to pl. re-upload it soon.

Regards
Pinakin
0
 
LVL 54

Author Comment

by:Joe Winograd, EE MVE 2015&2016
Comment Utility
Hi Pinakin,
I am not yet ready to re-attach the source code. However, I did receive your email and may be able to help you in another way, since you have an immediate need. I'll reply to your email soon. Regards, Joe
0
Update 21-May-2015: I temporarily removed the source code to make major changes to the program. Regards, Joe

In a previous Experts Exchange article, How To Rename-Move a Batch of PDF Files Based on Contents of the Files, I presented a program that solved a question asked here at EE. In that article and program, the situation was that a large number of PDF files in a folder had to be renamed automatically (en masse) with a suffix contained somewhere in each of the PDF files.

For example, a file might be named:

D123456.pdf

And inside that file at a fixed location (specific page, specific line, specific column) might be:

John Smith

In this example, the requirement is to rename the file as:

D123456 John Smith.pdf

A more recent question here at EE has a similar requirement, except that the suffix is contained in a specific cell of a corresponding Excel spreadsheet. In this newer question, there's an automated process that creates hundreds of PDF documents from Excel spreadsheets. The problem is that the PDF documents need to be renamed after they are created. The renaming should add a suffix to the current PDF file name, as in the previous question, but the suffix is in a fixed cell location of the Excel spreadsheet from which the PDF was created.

For example, a file might be named:

Order Number 12345.xls

In which case, the automated PDF creation process would create:

Order Number 12345.pdf
4
This article is in response to a question here at Experts Exchange. The Original Poster (OP) requires a utility that will accept a list of IP addresses as input, PING each of the IP addresses in the list, and send an email via SMTP to a support group when the PING is not successful on an IP address.

The method presented in this article requires AutoHotkey, an excellent (free!) programming/scripting language. The quick explanation for installing AutoHotkey is to visit its website and click the big blue Download button. A more comprehensive explanation is to read my EE article, AutoHotkey - Getting Started. After installation, AutoHotkey will own the AHK file type, supporting the solution discussed in the remainder of this article.

The utility takes as input a plain text file with each IP address on a separate line, such as:

192.168.0.123
192.168.0.456
192.168.0.789


The utility reads the file with the list of IP addresses and PINGs each one. It redirects the output of the PING command to a text file (via the command line ">" operator). It then looks for the five most common PING errors anywhere in the PING output, namely:

Destination Host Unreachable
Ping request could not find host
Request Timed Out
TTL Expired in Transit
Unknown Host


If the utility finds any of these, it sends an email via SMTP with PING Error Notification as the Subject and with an email Body
5
 
LVL 23

Expert Comment

by:Thomas Grassi
Comment Utility
Joe,

Just tested,

Works great two errors in my test and only one email.

My next phase will be to get email to get thru my exchange server.

Thanks again

If I get the exchange server code working I will post here for you.
0
 
LVL 54

Author Comment

by:Joe Winograd, EE MVE 2015&2016
Comment Utility
Tom,
Great to hear that the new code works for you. Documenting the settings needed for Exchange will be very helpful. Good luck!
0
Update 21-May-2015: I temporarily removed the source code and the code snippets to make major changes to the program. Regards, Joe

INTRODUCTION

This article was inspired by a recent question here at Experts Exchange. In response to that, I wrote a "quick-and-dirty" script that performs the function requested by the Original Poster, but it has numerous shortcomings. This article describes a major revision of that script, which addresses the shortcomings in the original one.

PROBLEM DESCRIPTION

The objective is to report a count of the files, for each file type (file extension), in a folder and all of its subfolders. In addition, the report should contain the total size of all files for each file type. Example:

Simple ReportSOLUTION

I wrote the original "quick-and-dirty" script in AutoHotkey, an excellent (free!) programming/scripting language. The quick explanation for installing AutoHotkey is to visit its website. A more comprehensive explanation is to read my EE article, AutoHotkey - Getting Started. After installation, AutoHotkey will own the AHK file type, supporting the solution discussed in the remainder of this article.

The new script improves upon the previous one in the following ways:

o  The original script hard-codes the name of the source folder. The new script provides a standard Windows "Browse for Folder" dialog that allows the user to navigate to the folder (or type or copy/paste the folder name).

o
2

Scripting Languages

26K

Solutions

72

Articles & Videos

20K

Contributors

A scripting language is a programming language that supports scripts, programs written for a special run-time environment that automate the execution of tasks that could alternatively be executed one-by-one by a human operator. Scripting languages are often interpreted (rather than compiled). Primitives are usually the elementary tasks or API calls, and the language allows them to be combined into more complex programs. Environments that can be automated through scripting include software applications, web pages within a web browser, the shells of operating systems (OS), embedded systems, as well as numerous games. A scripting language can be viewed as a domain-specific language for a particular environment; in the case of scripting an application, this is also known as an extension language.