То, что вы ищете, называется defer
. Он определяет блок кода, который не выполняется до тех пор, пока выполнение не собирается покинуть текущую область, но оно всегда выполняется.
func processFile(filename: String) throws {
if exists(filename) {
let file = open(filename)
defer {
close(file)
}
while let line = try file.readline() {
/* Work with the file. */
}
// close(file) is called here, at the end of the scope.
}
}
Подробнее о defer
см. В документации Apple Swift, особенно в разделе «Задание действий по очистке» .
Если вы изучаете .NET, Powershell - единственный выбор. VBScript существует гораздо дольше, поэтому, вероятно, существует больше примеров и примеров для VBScript. Но Powershell - это то место, где Microsoft сосредотачивает внимание на написании сценариев будущего. Он включен в WS2008 (R2), он будет в Win 7 и может быть добавлен в Vista, WS2003 или WS2008. Powershell имеет стратегическое значение. Я считаю его намного более мощным, чем VBScript.
Сообщество вокруг Powershell также растет. Только один пример: если вы зайдете на powershell.com, вы можете подписаться на «совет дня PowerShell», отправленный по электронной почте.
Что касается пересечения .NET - Powershell может загружать сборки .NET и вызывать их, поэтому эти две вещи будут дополнять друг друга.
Я поддержу рекомендации PowerShell. Разработчики в команде PowerShell были старыми руками Unix, и в PowerShell есть ряд Unix-подобных функций.
Что-то вроде Cygwin позволит вам использовать bash напрямую, но я бы не рекомендовал его по нескольким причинам. Во-первых, если вы работаете в среде Windows, PowerShell будет проще для кого-то без вашего опыта поддержки bash. Во-вторых, администрирование Windows станет проще в среде, где вы можете легко получить доступ к методам для объектов WMI и т. Д.
PowerShell имеет множество преимуществ традиционной оболочки Unix, но PowerShell имеет одно огромное преимущество: вы можете вызывать методы при объединении команд по конвейеру вместо анализа текста. Каждая команда возвращает объект.
Powershell, без вопросов, если вы собираетесь администрировать среду 2008 года или новее. Я часто бываю на конференциях Microsoft, и они вкладывают все свои микросхемы в Powershell.
Cygwin может поддерживать ваши навыки написания сценариев Unix актуальными в среде Windows. Powershell, похоже, на данный момент является официальным языком сценариев .Net. Однако не стоит сбрасывать со счетов другие варианты. Есть Ironpython , IronRuby и другие. Многие из языков сценариев Java, такие как Groovy , могут работать под .Net через IKVM
VBScript, batch и Powershell - самые большие, о которых я могу думать. Также узнайте, как работает WMI и как его вызвать из VBScript / Powershell.
Я много использовал PowerShell, это очень простой и мощный язык программирования, но он не поддерживает Windows 2000! И это заставило меня установить среду выполнения PowerShell на каждый компьютер в локальной сети. Что касается IronRuby, я рекомендую BOO - красивый и мощный язык.
I've been switched over to Linux for a few years myself, but I have recently done a few projects in Windows using Perl and I cannot recommend it enough. If you're actually going to be writing scripts, rather than single-commands, it's definitely worth considering. Check out Strawberry Perl. You might even be able to find a decent Perl shell that runs under strawberry perl, in which case you could use it for single-command stuff, too. Check out http://perldoc.perl.org/perlfaq3.html#Is-there-a-Perl-shell?
And don't think that Perl isn't good for scripting Windows stuff. In my recent projects, I've scripted with both Outlook and Excel in Perl using Win32::OLE, and it's worked like a charm!