using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Diagnostics;
using BasicNodes.Scripting;
using FileFlows.Plugin;
using FileFlows.Plugin.Attributes;
namespace FileFlows.BasicNodes.Scripting;
///
/// Flow element that executes a bat script
///
public class BatScript : ScriptBase
{
///
public override string Icon => "svg:bat";
///
public override string HelpUrl => "https://fileflows.com/docs/plugins/basic-nodes/bat-script";
///
protected override ScriptLanguage Language => ScriptLanguage.Batch;
///
/// Gets or sets the code to execute
///
[Required]
[DefaultValue(@"
REM A PowerShell script can communicate with FileFlows to determine which output to call next by using exit codes.
REM Exit codes are zero-based, so:
REM Exit Code 0 corresponds to Output 1
REM Exit Code 1 corresponds to Output 2
REM Exit Code 2 corresponds to Output 3
REM and so on. Exit codes outside the defined range will be treated as a failure output.
REM Replace {file.FullName} and {file.Orig.FullName} with actual values
SET WorkingFile={file.FullName}
SET OriginalFile={file.Orig.FullName}
REM Example commands using the variables
echo Working on file: %WorkingFile%
echo Original file location: %OriginalFile%
REM Add your actual batch commands below
REM Example: Copy the working file to a backup location
REM copy ""%WorkingFile%"" ""C:\Backup\%~nxWorkingFile%""
REM Set the exit code to 0
EXIT /B 0
")]
[Code(2, "bat")]
public override string Code { get; set; }
}