Rather than requiring a language to be "interpreted" to call it a scripting language, I think it would be more accurate to say that scripting languages are not precompiled. That allows both interpreted and compile-at-runtime languages to qualify.
The difference, for purposes of defining it as a "scripting language" (or not), would be in whether or not it is still in a source-code format right up to the point where you run the script (and whether or not it is still source code when it's done running). This in turn creates a set of characteristics for usability that are attached to scripting languages and not precompiled languages. It is in truth these usability characteristics that makes the difference, but those characteristics depend on whether or not your code is precompiled.
From within the limited environment of an IDE like Microsoft's Visual C++, C code is actually sort of a "scripting" language, in that it is source code right up to the moment you run it, and still source code when you're done. Only when you compile the binary and exit Visual C++ does it become a non-scripting programming language.
This does tend to fit with the idea that a scripting language is what you use to "get things done", of course: scripting languages, because they can be created and/or modified very easily on the fly, are used to do things
, and non-scripting programming languages are used to make things
I see nothing to deride in either term. Each has its uses. Neither of them is necessarily limited within its range, and both are quite limited outside of their respective ranges. The only derogatory thing worth saying in regards to either might appropriately be applied to the programmer if he or she uses the wrong tool for the job. If you know both PHP and C++, for instance, and try to use PHP to write applications and C++ to write includes for a web page, you're probably doing something drastically wrong.