Puedes crear un bat en tiempo de ejecución con las funciones que mencionas, ejecutarlo, esperar a que termine su proceso y borrarlo o desde el mismo .bat un "autoborrado".
Otro modo puede ser igualmente lo mencionado pero con un script .sql + un .bat
Por ultimo podria ser del siguiente modo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
System.Diagnostics.ProcessStartInfo info
= new System.Diagnostics.ProcessStartInfo("CMD.EXE",
@"/C title Simon && cd \ && echo hola && dir *.* && pause"); info.Verb = "open";
System.Diagnostics.Process.Start(info);
Console.ReadKey();
}
}
}
Haces todo el trabajo en una sola línea o alguna combinación, mostrando o no la consola.
Aunque asi es sencillo modificar los strings que contiene este pequeño programa y tb ver los mismos, para dificultar un poco puedes utilizar valores decimales u otros y pasarlos a su equivalente en "Chr" en tiempo de ejecución para obtener el string que quieres ocultar.